我想以一种方式组合两个多维数组,在结果数组中,array1值作为array2的键。
这是两个示例数组:
$array1 = array(
array('data1'),
array('data2'),
array('data3')
);
$array2 = array(
array('5','12','4'),
array('8','2','17'),
array('20','15','3')
);
生成的数组应如下所示:
$array = array(
'data1' => array('5','12','4'),
'data2' => array('8','2','17'),
'data3' => array('20','15','3')
);
我怎么能实现这个目标? 谢谢!
答案 0 :(得分:2)
你可以做这样的事情
$array = [];
$count = count($array1);
for($index = 0; $index < $count; $index++)
{
$array[$array1[$index][0]] = $array2[$index];
}
这应该做你想要实现的目标
答案 1 :(得分:1)
您可以使用array_combine将键和值组合到新数组中。您可以查看 this is the ugly result i´ve got 。
array_combine(array_map(function($v){return $v[0];},$array1), $array2);
答案 2 :(得分:1)
使用array_map(),可以使用用户定义的功能。
<?php
$array1 = array(
array('data1'),
array('data2'),
array('data3')
);
$array2 = array(
array('5', '12', '4'),
array('8', '2', '17'),
array('20', '15', '3')
);
function mapArray($array1, $array2) {
return [$array1[0] => $array2];
}
$new_arr = array_map("mapArray", $array1, $array2);
<强>输出强>
答案 3 :(得分:0)
$array1 = array(
array('data1'),
array('data2'),
array('data3')
);
$array2 = array(
array('5','12','4'),
array('8','2','17'),
array('20','15','3')
);
$main_array=array(count($array1));
foreach($array as $array_item){
$array_item=array(count($array2));
for($i=1;$i<count($array2);$i++){
array.push($array_item,$array2[$i]);
}
array.push($main_array,$array_item);
}
echo "<br>";
print_r($main_array);
echo "</br>";
答案 4 :(得分:0)
只需使用两个原生 php 函数即可简洁地完成此操作。
调用 array_combine()
之前的唯一步骤是减少第一个数组的深度。要从每个子数组中提取第一个值,只需调用 array_column()
并指定您需要所有 0
键值。
代码:(Demo)
$array1 = [['data1'], ['data2'], ['data3']];
$array2 = [['5', '12', '4'], ['8', '2', '17'], ['20', '15', '3']];
var_export(
array_combine(array_column($array1, 0), $array2)
);
输出:
array (
'data1' =>
array (
0 => '5',
1 => '12',
2 => '4',
),
'data2' =>
array (
0 => '8',
1 => '2',
2 => '17',
),
'data3' =>
array (
0 => '20',
1 => '15',
2 => '3',
),
)