将2个PHP数组合并为多维数据

时间:2018-01-27 07:57:21

标签: php arrays multidimensional-array

我有2个独立的数组:

Array
(
    [0] => Header 1
    [1] => Header 2
)

Array
(
    [0] => Array
        (
            [0] => Content #1
            [1] => Content #2
        )

    [1] => Array
        (
            [0] => Content #1.1
        )

)

如何将这两个数组组合成多维,格式如下:

Array
(
    [0] => Array
        (
            [Header 1] => Content #1
            [Header 2] => Content #1.1
        )

    [1] => Array
        (
            [Header 1] => Content #2
        )

)

目的是创建HTML表。我找到了一种从这里How to create a HTML Table from a PHP array?创建表的方法,但数组格式应该像最后一个。

3 个答案:

答案 0 :(得分:2)

使用foreach循环的直接方式......

$arr1 = ['Header 1', 'Header 2'];
$arr2 = [['Content #1', 'Content #2'],
    [ 'Content #1.1']];

$result= [];
foreach ( $arr2 as $arr3 ){
    $partial = [];
    foreach ( $arr3 as $key=>$value )  {
        $partial[$arr1[$key]] = $value;
    }
    $result[] = $partial;
}

print_r($result);

(请原谅不是非常有创造力的变量名称)

...给出

Array
(
    [0] => Array
        (
            [Header 1] => Content #1
            [Header 2] => Content #2
        )

    [1] => Array
        (
            [Header 1] => Content #1.1
        )

)

如果您知道第二个数组的值始终与第一个数组的值相同,则可以简化,因为您可以在循环中使用array_combine()。虽然你可以捏造这个......

$arr1 = ['Header 1', 'Header 2'];
$arr2 = [['Content #1', 'Content #2'],
    [ 'Content #1.1']];

$result= [];
foreach ( $arr2 as $arr3 ){
    $arr4 = array_slice($arr1,0,count($arr3));
    $result[] = array_combine($arr4, $arr3);
}

print_r($result);

答案 1 :(得分:0)

我猜你应该使用" +"运营商,即 $newArray = $array1 +array2

答案 2 :(得分:0)

这是您的解决方案

<强>输入

$array1 = array('Header 1','Header 2');
$array2 = array(array('Content #1','Content #2'),array('Content #1.1'));

<强>解决方案

$new = array();
foreach($array2 as $key => $row){
    for($i=1;$i<=count($row);$i++){
    $new[$key]['Header '.$i] = $row[$i-1];
    }
}

<强>输出

Array
(
    [0] => Array
        (
            [Header 1] => Content #1
            [Header 2] => Content #2
        )

    [1] => Array
        (
            [Header 1] => Content #1.1
        )

)