2017-02-01 8 views
0

Я пытаюсь объединить 2 массива, где ключи одинаковы.Слияние массива PHP с теми же ключами

Это мой массив:

[username] => Array 
    (
     [3805120] => 5 
     [3805121] => 7 
    ) 

[login] => Array 
    (
     [3805120] => 9 
     [3805121] => 11 
    ) 

мне нужно что-то вроде этого:

[3805120] => Array 
    (
     [0] => 5 
     [1] => 9 
    ) 

[3805121] => Array 
    (
     [0] => 7 
     [1] => 11 
    ) 
+0

Что именно вы пробовали и как это терпит неудачу? – jeroen

+0

Я пытаюсь array_replace_recursive и array_merge_recursive, но безуспешно. – didsun

+0

Существует не волшебная функция PHP, которая интуитивно понимает структуру вашего массива и распознает, как вы хотите ее изменить; вам на самом деле нужно написать немного кода, чтобы сделать это самостоятельно –

ответ

0

Довольно простой. Вам нужен вложенный цикл, который устанавливает ключи подмассива в качестве ключей нового массива и использует [], чтобы новые значения были добавлены к массиву с автоматическим значением увеличения [0,1, ... n].

[имя пользователя] => Массив ( [3805120] => 5 [3805121] => 7 )

[Войти] => Массив ( [3805120] => 9 [3805121] => 11 )

// $array is the original array 
$newArray = array(); 

foreach($array as $key => $subarray){ 
    //key: username, login 
    foreach($subarray as $j => $k){ 
    //j: 3805120, 3805121 
    //k: 5,7,9,11 
    $newArray[$j][] = $k; 
    //1st round: $newArray[3805120][0] = 5, $newArray[3805121][0] = 7 
    //2nd round: $newArray[3805120][1] = 9, $newArray[3805121][1] = 11 
    } 
} 

var_dump($newArray); 

Выход:

массива (2) {[3805120] => массив (2) { [0] => строка (1) "5" [1] => строка (1) "9" } [3805121] => массив (2) { [0] => строка (1) "7" [1] => строка (2) "11"}}

+0

Спасибо, помощник. Эта работа решена! – didsun

0

попробовать это:

$array1 = array('0' => 5, '1' => 9); 
$array2 = array('0' => 10, '1' => 3); 
$result =array_merge_recursive($array1,$array2); 

print_r($result); 
Смежные вопросы