在 PHP 中将 3 个数组合并为 3D 数组


Merge 3 arrays into 3d array in PHP

>我有 3 个数组,所有数字都与我需要合并到一个 3D 数组中的数字相同。

所以像这样:

array1 = 'aud', 'usd', 'usd' 
array2 = 'item 1', item 2', 'item 3' 
array3 = '100', 300', 500' 

我需要生成一个数组,例如:

new_array1 = 'aud', 'item 1', '100' 
new_array2 = 'usd', 'item 2', '300'

我已经尝试了以下什么都不打印的方法:

$item = array();
for($i=0; $i < sizeof($currencies); $i++) {
    $item[$i] = array('curr' => $currencies[$i], 
                            'name' => $events[$i], 
                            'result' => $actuals[$i]);
}
print_r($item);

你一定做错了什么,因为我用这个脚本得到了正确的结果:

$arr1 = [ "aud", "usd", "usd" ];
$arr2 = [ "item 1", "item 2", "item 3" ];
$arr3 = [ 100, 300, 500 ];
$nestedArr = [];
for($i = 0; $i < count($arr1); $i++) {
    $nestedArr[$i] = [ 
        "curr" => $arr1[$i],
        "name" => $arr2[$i],
        "result" => $arr3[$i]
    ];
}
print_r($nestedArr);

输出:

Array (
  [0] => Array (
    [curr] => aud
    [name] => item 1
    [result] => 100
  )
  [1] => Array (
    [curr] => usd
    [name] => item 2
    [result] => 300
  )
  [2] => Array (
    [curr] => usd
    [name] => item 3
    [result] => 500
  )
)

请注意,我使用了PHP数组短语法来声明数组[],这应该不会有什么区别。这是很好的做法。

好吧,您的代码应该生成一个 2D 数组,请尝试删除 $i

$item[$i] = array('curr' => $currencies[$i], 

所以它看起来像这样:

$item[] = array('curr' => $currencies[$i], 

同样要添加 3D 数组,您应该静态创建它,如下所示:

$item = array(
    'usd' => array(
        item1 => array("100" => 100, "200" => 200, "300" => 300),
        item2 => array("100" => 100, "200" => 200, "300" => 300),
        item3 => array("100" => 100, "200" => 200, "300" => 300),
    ),
    'eur' => array(
        item1 => array("100" => 100, "200" => 200, "300" => 300),
        item2 => array("100" => 100, "200" => 200, "300" => 300),
        item3 => array("100" => 100, "200" => 200, "300" => 300),
    ),
    'gbp' => array(
        item1 => array("100" => 100, "200" => 200, "300" => 300),
        item2 => array("100" => 100, "200" => 200, "300" => 300),
        item3 => array("100" => 100, "200" => 200, "300" => 300),
    ),
),