PHP结合了两个多维数组并使用一个数组作为键

时间:2017-05-14 01:13:45

标签: php arrays multidimensional-array

我想以一种方式组合两个多维数组,在结果数组中,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')
);

我怎么能实现这个目标? 谢谢!

5 个答案:

答案 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);

<强>输出

enter image description here

答案 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',
  ),
)