3

我有一个看起来像这样的数组数据:

Array (
    [0] => Array (
        [0] => Name:
        [1] => John W.
        [2] => Registration ID:
        [3] => 36
    ) 
    [1] => Array (
        [0] =>Age:
        [1] => 35
        [2] => Height:
        [3] => 5'11"
    ) 
    [3] => Array (
        [0] => Sex:
        [1] => M
        [2] => Weight:
        [3] => 200lbs
    )
    [4] => Array (
        [0] => Address
    )
    [5] => Array (
        [0] => 6824 crestwood dr delphi, IN 46923
    ))

我想把它转换成这样的关联数组:

Array(
    ['Name']=> John W.
    ['Registration ID']=> 36
    ['Age']=> 35
    ['Height'] => 5'11''
    ['Sex']=>M
    ['Weight']=>200lbs
    ['Address']=>6824 crestwood dr delphi, IN 46923
)

我完全不知道该怎么做,因为应该是数组列标题也是按顺序排列的,所以很难转换这个数组。

我感谢任何帮助,谢谢。

4

2 回答 2

2

鉴于您的原始数组被调用$origin,您可以这样做:

$merged = array();
foreach($origin as $val) {
   $merged = array_merge($merged, $val);
}
$tot = count($merged) - 1;
for ($i=0;$i<$tot;$i+=2) {
   $result[$merged[$i]] = $merged[$i+1];
}

var_dump($result); // To test the resulting array

首先,我使用array_merge()$origin数组展平为只有一个维度/深度,因此我们稍后对其进行迭代(每次迭代每 2 个项目步进)并将每对项目 ($i$i+1) 分配给结果数组。

于 2012-11-09T04:32:37.787 回答
1

看起来,对于前 3 个孩子,您可以将偶数值分配给前一个元素作为键。然后,将第四个指定为第五个元素的键。

   $result = array();
   foreach ($array as $key => $value)
   {
       if ($key < 4) {
             $elements = array_values($value);
             $result[$elements[0]] = $elements[1];
             $result[$elements[2]] = $elements[3];
        }

        if ($key == 4)
             $fifthkey = $value;

         if ($key == 5)
             $result[$fifthkey] = $value;
    }

另外,请注意,您必须转义您的高度字符串引号。

于 2012-11-09T04:43:45.417 回答