组合两个multidimensioal数组并设置一个作为键

时间:2012-08-02 15:43:16

标签: php arrays

我有这两个数组,我需要结合

Array (
    [0] => Column 1
    [1] => Column 2
    [2] => Column 3
)
Array (
    [0] => Array (
            [0] => 111
            [1] => 222
            [2] => 333
        )
    [1] => Array (
            [0] => 444
            [1] => 555
            [2] => 666
        )
)

进入这个

Array (
    [0] => Array (
            [Column 1] => 111
            [Column 2] => 222
            [Column 3] => 333
        )
    [1] => Array (
            [Column 1] => 444
            [Column 2] => 555
            [Column 3] => 666
        )
)

这就是我所拥有的并且它有效,但我相信它可以以更简单的方式完成:

$values = array( array( 1,2,3), array( 4,5,6) );
$fields = array( 'Column 1','Column 2','Column 3');
$i = 0;
$j = 0;
$l = 0;
$rows = array();
$columns = array();

foreach($values as $val) {
    $rows[] = $val;

    foreach ($fields as &$field) {
        $columns[$j][$i] = $field;
        $i++;
    }
    $i = 0;
    $j++;
}

foreach($columns as $c){
    $result[] = array_combine($c,$rows[$l]);
    $l++;
}

我想要的是尽可能清理它。我有时会遇到阵列的困难,这个问题真的与我的脑袋混在一起。 :-)

2 个答案:

答案 0 :(得分:4)

迭代数组数组并将每个数组与键一起传递给array_combine [docs]

$result = array();

foreach($values as $key => $value) {
    $result[$key] = array_combine($fields, $value);
}

答案 1 :(得分:1)

我认为你所做的array_combine()很简单,因为你可以得到它。 PHP没有针对所有内容的功能,但是你可以将它变成你当时的任何需求,所以它看起来很好。

有点奇怪你之前把值和键放在单独的数组中,你可以简单地对我认为的那个大的那个做一个foreach ...或者我可能太快看了一下代码?