Array Merge / Replace - PullRequest
       29

Array Merge / Replace

4 голосов
/ 15 мая 2009

У меня есть два массива:

Array
(
    [2005] => 0
    [2006] => 0
    [2007] => 0
    [2008] => 0
    [2009] => 0
)

Array
(
    [2007] => 5
    [2008] => 6.05
    [2009] => 7
)

Я хочу объединить эти два массива так, чтобы, если значение существовало во втором массиве, оно перезаписывало значение первого массива. Таким образом, результирующий массив будет:

Array
(
    [2005] => 0
    [2006] => 0
    [2007] => 5
    [2008] => 6.05
    [2009] => 7
)

Спасибо за вашу помощь.

UPDATE: Это была моя лучшая попытка, но безуспешно:

    $final = '';
    foreach ($years as $k => $v){
        if (in_array($k,$values)){
            $final .= $values[$k] . '|';
        }else{
            $final .= $k[$v] . '|';
        }

    }

    echo "final = $final";

Ответы [ 5 ]

29 голосов
/ 15 мая 2009

Как я недавно узнал, в PHP есть оператор объединения массивов , который делает именно это:

$result = $a + $b;

Где $ a - массив со значениями, которые вы хотите иметь приоритет. (Так что в вашем примере это означает, что второй массив - "$a".

9 голосов
/ 05 апреля 2013

Это так просто:

$new_array = array_replace(array_1,array_2);

страница руководства php

3 голосов
/ 15 мая 2009

я немного изменил это для внутренних массивов, спасибо за ваш код, который дает идею на первом шаге:)

function combine($a1, $a2) {
    foreach($a2 as $k => $v) {
        if(is_array($v)) {
            if(!isset($a1[$k]))
                $a1[$k] = null;

            $a1[$k] = combine($a1[$k], $v);
        } else {
            $a1[$k] = $v;
        }
    }
    return $a1;
}
2 голосов
/ 15 мая 2009

Разве это не может быть просто так:

$new_array = array_unique(array_merge($ar1,$ar2));

Может быть, я что-то упустил или я сумасшедший.

1 голос
/ 15 мая 2009

Я не настолько знаком с PHP, но что-то вроде:

foreach ($array2 as $i => $value) {
  $array1[$i] = $value;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...