Сохранить разницу двух массивов в другом массиве в PHP - PullRequest
1 голос
/ 24 марта 2019

Я пытаюсь сохранить разницу двух массивов в новом.

Я использовал array_diff , и код, который у меня сейчас есть, частично работает, но кажется, чтоновый массив сохраняет элементы в неправильной позиции.

<?php 
    // Arrays to hold the numbers for this demo
    $arr1 = array(5,6,7,8);
    $arr2 = array(2,5,6);
    $arr3 = array_diff($arr1, $arr2);

    // Correct result but in wrong positions in the array
    var_dump($arr3); // array(2) { [2]=> int(7) [3]=> int(8) }
?>

Как можно иметь значение в позициях 2 и 3 массива размера 2?

Любое объяснение причины этой проблемы очень ценится, спасибо.

1 Ответ

3 голосов
/ 24 марта 2019

Поскольку массивы не имеют , чтобы начинаться с нуля. Как видите, array_diff() сохранит ключи.

Если вы хотите сбросить ключи массива, вы можете использовать array_values():

// Arrays to hold the numbers for this demo
$arr1 = array(5,6,7,8);
$arr2 = array(2,5,6);
$arr3 = array_values(array_diff($arr1, $arr2));
var_dump($arr3);

Выход:

array(2) {
  [0]=>
  int(7)
  [1]=>
  int(8)
}

Демо

...