如何将数组转换为键值对数组?

时间:2012-02-18 18:03:44

标签: php multidimensional-array

我有这个阵列:

array(
    0 => array("name", "address", "city"), 
    1=> array( "anoop", "palasis", "Indore"),
    2=> array( "ravinder", "annapurna", "Indore")
)

我希望以这种方式制作这个数组:

array( 
    0 =>  array("name" = >"anoop" , "address" = >"palasia", "city" = >"Indore"),
    1 =>  array("name" = >"ravinder" , "address" = >"annapurna", "city" = >"Indore")
)

5 个答案:

答案 0 :(得分:4)

使用array_combine。如果$array包含您的数据

$result = array(
             array_combine($array[0], $array[1]),
             array_combine($array[0], $array[2])
          );

一般

$result = array();
$len = count($array);
for($i=1;$i<$len; $i++){
    $result[] = array_combine($array[0], $array[$i]);
}

答案 1 :(得分:2)

现代方式是:

$data = array_column($data, 'value', 'key');

在你的情况下:

$data = array_column($data, 1, 0);

答案 2 :(得分:1)

如果您的数据位于$array

$res = array();
foreach ($array as $key=>$value) {
    if ($key == 0) {
        continue;
    }
    for ($i = 0; $i < count($array[0]); $i++) {
        $res[$array[0][$i]] = $value[$i];
    }
}

结果现在在$res

答案 3 :(得分:1)

以下是您可以使用的功能:

function rewrap(Array $input){
    $key_names = array_shift($input);
    $output = Array();
    foreach($input as $index => $inner_array){
        $output[] = array_combine($key_names,$inner_array);
    }
    return $output;
}

这是一个演示:

// Include the function from above here 
$start = array(
    0 => array("name", "address", "city"),
    1 => array("anoop", "palasis", "Indore"),
    2 => array("ravinder", "annapurna", "Indore")
);
print_r(rewrap($start));

输出:

Array
(
    [0] => Array
        (
            [name] => anoop
            [address] => palasis
            [city] => Indore
        )

    [1] => Array
        (
            [name] => ravinder
            [address] => annapurna
            [city] => Indore
        )

)

注意:您的第一个数组定义索引1两次,所以我将第二个更改为2,如下所示:

array(0 => array("name", "address", "city"), 1 => array("anoop", "palasis", "Indore"),2 => array("ravinder", "annapurna", "Indore"))

这可能只是一个错字。

答案 4 :(得分:0)

假设您正在解析CSV文件,请查看此问题的答案:

  

Get associative array from csv