PHP中的数组搜索与合并
我有两个数组。是否可以创建输出数组并将键/值从第一个添加到第二个?我的阵列看起来像: 第一:PHP中的数组搜索与合并,php,arrays,Php,Arrays,我有两个数组。是否可以创建输出数组并将键/值从第一个添加到第二个?我的阵列看起来像: 第一: Array ( [0] => Array ( [id] => 11 [expire] => undefined ) [1] => Array ( [id] => 1
Array
(
[0] => Array
(
[id] => 11
[expire] => undefined
)
[1] => Array
(
[id] => 12
[expire] => undefined
)
[2] => Array
(
[id] => 6
[expire] => 8
)
[3] => Array
(
[id] => 10
[expire] => 4
)
)
第二点:
Array
(
[0] => Array
(
[id] => 6
[realname] => to_es.gif
[extension] => gif
[filesize] => 57885
)
[1] => Array
(
[id] => 10
[realname] => to_joomla_2_customer_view.gif
[extension] => gif
[filesize] => 77182
)
[2] => Array
(
[id] => 11
[realname] => to_nl.gif
[extension] => gif
[filesize] => 10990
)
[3] => Array
(
[id] => 12
[realname] => to_PL_1.gif
[extension] => gif
[filesize] => 52826
)
)
如何获取输出阵列:
Array
(
[0] => Array
(
[id] => 6
[realname] => to_es.gif
[extension] => gif
[filesize] => 57885
[expire] => 8
)
[1] => Array
(
[id] => 10
[realname] => to_joomla_2_customer_view.gif
[extension] => gif
[filesize] => 77182
[expire] => 4
)
[2] => Array
(
[id] => 11
[realname] => to_nl.gif
[extension] => gif
[filesize] => 10990
[expire] => undefined
)
[3] => Array
(
[id] => 12
[realname] => to_PL_1.gif
[extension] => gif
[filesize] => 52826
[expire] => undefined
)
)
我假设您的第一个数组为
$array1
,第二个数组为$array2
,您可以在第一个数组中循环,然后在第二个数组中循环比较id
,找到时将两个数组混合在一个新数组中
$new_array = array();
for($i=0; $i<count($array1); $i++)
{
foreach($array2 as $key => $data)
{
if($data['id'] == $array1[$i]['id'])
{
$new_array[] = array('id' => $array1[$i]['id'], 'realname' => $data['realname'], 'extension' => $data['extension'], 'filesize' => $data['filesize'], 'expire' => $array1[$i]['expire']);
}
}
}
var_dump($new_array);
试试这个:
function my_array_merge($first,$second) {
$new = array();
foreach ($first as $f_item) {
foreach ($second as $i => $s_item) {
if ($f_item['id']===$s_item['id']) {
$new[] = $f_item + $s_item;
unset($second[$i]);
break;
}
}
}
usort($new, function($a,$b) {
return $a['id'] - $b['id'];
});
return $new;
}
Ideone示例:这里的
foreach
没有问题;您尝试过什么吗?数组元素的顺序起作用吗?在第一个数组中,索引为[0]的数组的id为11。在第二个数组中,第一个数组的id为6。那么,您希望如何将其合并?是要按数组索引合并还是按id合并?您好,是应该按id合并,而不是按索引合并。
function my_array_merge($first,$second) {
$new = array();
foreach ($first as $f_item) {
foreach ($second as $i => $s_item) {
if ($f_item['id']===$s_item['id']) {
$new[] = $f_item + $s_item;
unset($second[$i]);
break;
}
}
}
usort($new, function($a,$b) {
return $a['id'] - $b['id'];
});
return $new;
}