将复数数组转换为关联数组

时间:2012-11-09 04:25:42

标签: php arrays multidimensional-array

我有一个如下所示的数组数据:

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
)

我根本不知道如何做到这一点,因为假设是数组列标题也是顺序的,所以很难转换这个数组。

我欣赏的任何帮助,thx。

2 个答案:

答案 0 :(得分: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数组展平为只有一个维度/深度,因此我们稍后迭代它(每次迭代踩两个项目)并分配每对项目({{ 1}}和$i)到结果数组。

答案 1 :(得分: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;
    }

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