Diberikan 2 array dalam PHP yang terlihat seperti ini ...

Array
(
    [item1] => Array
        (
            [myValues] => Array
                (
                    [1] => 5
                    [2] => 1
                )

        )

    [item2] => Array
        (
            [myValues] => Array
                (
                    [1] => 5
                    [2] => 1
                )

        )

)

Array
(
    [item1] => Array
        (
            [1] => 2
        )

    [item2] => Array
        (
            [1] => 5
            [2] => 1
        )

)

array1
array ( 'item1' => array ( 'myValues' => array ( 1 => 5, 2 => 1, ), ), 'item2' => array ( 'myValues' => array ( 1 => 5, 2 => 1, ), ), )

Apa cara terbaik untuk menggabungkannya ke dalam array yang terlihat seperti ini ...

Array
(
    [item1] => Array
        (
            [myValues] => Array
                (
                    [1] => 5
                    [2] => 1
                )
            [myValues2] => Array
                (
                    [1] => 2
                )

        )

    [item2] => Array
        (
            [myValues] => Array
                (
                    [1] => 5
                    [2] => 1
                )
            [myValues2] => Array
                (
                    [1] => 5
                    [2] => 1
                )

        )

)

array2
array ( 'item1' => array ( 1 => 2, ), 'item2' => array ( 1 => 5, 2 => 1, ), )

Saya tidak memiliki kendali atas output jadi saya pikir pendekatan terbaik saya adalah mengulang setiap array dan menyalin item ke yang baru.

Saya telah mencoba...

print_r(array_merge($a1,$a2));

Tapi ini tidak memberi saya hasil yang saya cari. Apakah ada yang punya contoh?

0
fightstarr20 31 Januari 2020, 22:19

2 jawaban

Jawaban Terbaik

Dorong data array2 Anda ke dalam array1 dengan menggunakan kunci tingkat pertama yang diketahui dan kunci tingkat kedua yang Anda temukan.

Kode: (Demo)

$array1 = array ( 'item1' => array ( 'myValues' => array ( 1 => 5, 2 => 1, ), ), 'item2' => array ( 'myValues' => array ( 1 => 5, 2 => 1, ), ), );
$array2 = array ( 'item1' => array ( 1 => 2, ), 'item2' => array ( 1 => 5, 2 => 1, ), );

foreach ($array2 as $key => $subarray) {
    $array1[$key]['myValues2'] = $subarray;
}

var_export($array1);

Keluaran:

array (
  'item1' => 
  array (
    'myValues' => 
    array (
      1 => 5,
      2 => 1,
    ),
    'myValues2' => 
    array (
      1 => 2,
    ),
  ),
  'item2' => 
  array (
    'myValues' => 
    array (
      1 => 5,
      2 => 1,
    ),
    'myValues2' => 
    array (
      1 => 5,
      2 => 1,
    ),
  ),
)
2
mickmackusa 31 Januari 2020, 19:59

Anda dapat menyesuaikan fungsi baru untuk melakukannya untuk Anda misalnya:

function customMergeTwoArray($array1, $array2)
{
    $newArray = [];
    foreach($array1 as $key => $value){
        if(key_exists($key, $array2)){
            $newArray[$key][] = $value;
            $newArray[$key][] = $array2[$key];
        }else{
            $newArray[] = $value;
        }
    }
    return $newArray;
}
-2
mahmoud salem 31 Januari 2020, 20:31