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

$array1 = [3,6,5];
$array2 = [1,2,3,4,5,6];

Я хочу добиться этого:

$newArray = [3,6,5,1,2,4];

Поэтому он сохраняет последовательность и добавляет недостающее значение в $array1.

    foreach($array1 as $data){
        if(!in_array($data, $array2)){
            array_push($array2, $data);
        }
    }

Я пробую приведенный выше код, но у меня массив стал двойным.

Любое решение?

0
ssuhat 4 Сен 2016 в 18:10

3 ответа

Лучший ответ

Как это,

$newArray = array_unique(array_merge($array1 ,$array2));

Эта функция array_merge () используется для объединения одного или нескольких массивов в один массив, а функция array_unique () удаляет повторяющиеся значения из массива.

3
Kushan 4 Сен 2016 в 15:21

Попробуй это:

$array1 = [3,6,5];
$array2 = [1,2,3,4,5,6];
$diff = array_diff($array2, $array1);
$newArray = array_merge($array1, $diff);

Надеюсь, это поможет..

0
Pezhvak 4 Сен 2016 в 15:27

Чтобы придерживаться существующего подхода, вам необходимо изменить логику:

foreach($array2 as $data){
    if(!in_array($data, $array1)){
        array_push($array1, $data);
        //or
        //$array1[] = $data;
    }
}
0
AbraCadaver 4 Сен 2016 в 15:29