我有以下两个数组:
Array ( [Jonah] => 27 [Bianca] => 32
Array ( [Jonah] => 2 [Bianca] => 7
是否可以将它们合并在一起以形成这种格式的多维数组?
Array ( [0] => Array
( [name] => Jonah
[age] => 27
[number] => 2 )
[1] => Array
( [name] => Bianca
[age] => 32
[number] => 7 )
)
按名称键控的临时数组存储前两个数组的值。然后将临时数组复制到最后一个以数字键控的数组:
$arr1 = array ( 'Jonah' => 27, 'Bianca' => 32 );
$arr2 = array ( 'Jonah' => 2, 'Bianca' => 7 );
$tmp = array();
// Using the first array, create array keys to $tmp based on
// the name, and holding the age...
foreach ($arr1 as $name => $age) {
$tmp[$name] = array('name' => $name, 'age' => $age);
}
// Then add the number from the second array
// to the array identified by $name inside $tmp
foreach ($arr2 as $name => $num) {
$tmp[$name]['number'] = $num;
}
// Final array indexed numerically:
$output = array_values($tmp);
print_r($output);
Array
(
[0] => Array
(
[name] => Jonah
[age] => 27
[number] => 2
)
[1] => Array
(
[name] => Bianca
[age] => 32
[number] => 7
)
)
注意:如果您同意按名称键控输出数组,则不需要复制数组以使其成为数字数组的最后一步。在这种情况下,$tmp
是最终产品。
好。以下功能应该让你成为你想要的样子:
$people = array ( 'Jonah' => 27, 'Bianca' => 32 );
$numbers = array ( 'Jonah' => 2, 'Bianca' => 7 );
$merged = array();
$i = 0;
foreach ($people as $k=>$v)
{
if (isset($numbers[$k]))
{
$merged[$i]['name'] = $k;
$merged[$i]['age'] = $v;
$merged[$i++]['number'] = $numbers[$k];
}
}
现在,如果你做一个var_dump($merged);
,你会得到:
array
0 =>
array
'name' => string 'Jonah' (length=5)
'age' => int 27
'number' => int 2
1 =>
array
'name' => string 'Bianca' (length=6)
'age' => int 32
'number' => int 7