0

私は2つの配列を持っています。出力配列を作成し、最初の配列から 2 番目の配列にキー/値を追加することは可能ですか? 私の配列は次のようになります。

最初:

 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
                )

        )
4

2 に答える 2

1

最初の配列内でループしてから2番目の比較でループし、見つかったときに両方の配列を新しい配列に混ぜることができるので、最初の配列$array1を2番目と仮定しています$array2id

$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);

これは出力されます

array(4) {
[0]=>
array(5) {
    ["id"]=>
    string(2) "11"
    ["realname"]=>
    string(9) "to_nl.gif"
    ["extension"]=>
    string(3) "gif"
    ["filesize"]=>
    string(5) "10990"
    ["expire"]=>
    string(9) "undefined"
}
  [1]=>
  array(5) {
    ["id"]=>
    string(2) "12"
    ["realname"]=>
    string(11) "to_PL_1.gif"
    ["extension"]=>
    string(3) "gif"
    ["filesize"]=>
    string(5) "52826"
    ["expire"]=>
    string(9) "undefined"
  }
  // and so on

ライブワーキングコード

于 2013-05-15T12:16:04.863 に答える
1

これを試して:

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 の例: http://ideone.com/TQIIkH

于 2013-05-15T12:23:35.427 に答える