【问题标题】:Combine 2 PHP array into multidimensional将2个PHP数组组合成多维
【发布时间】:2018-07-06 12:40:24
【问题描述】:

我有 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? 创建表的方法,但数组格式应该和最后一个一样。

【问题讨论】:

  • stackoverflow.com/questions/4301378/… 的可能重复项...检查一下
  • 如果你想学习一些东西,你应该修改你找到的配方以匹配你拥有的输入数据,而不是相反。

标签: php arrays multidimensional-array


【解决方案1】:

我猜你应该使用“+”运算符,即 $newArray = $array1 +array2

【讨论】:

  • 你试过了吗?它没有做任何接近预期结果的事情。
【解决方案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);

【讨论】:

    【解决方案3】:

    这是你的解决方案

    输入

    $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
            )
    
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多