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;
}