Найти в Дзене

PHP: Сравнение двух массивов на соответствие ключей и значений

В PHP есть несколько способов сравнить два массива на соответствие в зависимости от того, что именно нужно проверить: $array1 = [1, 2, 3]; $array2 = [2, 1, 3]; if (array_diff($array1, $array2) === [] && array_diff($array2, $array1) === []) { echo "Массивы содержат одинаковые значения"; } else { echo "Массивы разные"; } if ($array1 === $array2) { echo "Массивы полностью идентичны (значения, ключи, порядок и типы)"; } else { echo "Массивы разные"; } if (array_diff_assoc($array1, $array2) === [] && array_diff_assoc($array2, $array1) === []) { echo "Массивы содержат одинаковые пары ключ-значение"; } else { echo "Массивы разные"; } if (array_diff($array1, $array2) === []) { echo "Все элементы первого массива есть во втором"; } if (array_diff($array2, $array1) === []) { echo "Все элементы второго массива есть в первом"; } function arrays_are_equal($a, $b) { return serialize($a) === serialize($b); } if (arrays_are_equal($array1, $array2)) { echo "Многомерные массивы идентичны"; } if (array_d
Оглавление

В PHP есть несколько способов сравнить два массива на соответствие в зависимости от того, что именно нужно проверить:

1. Простое сравнение значений (без учета ключей)

$array1 = [1, 2, 3];
$array2 = [2, 1, 3];
if (array_diff($array1, $array2) === [] && array_diff($array2, $array1) === []) {
echo "Массивы содержат одинаковые значения";
} else {
echo "Массивы разные";
}

2. Строгое сравнение с учетом порядка и типов

if ($array1 === $array2) {
echo "Массивы полностью идентичны (значения, ключи, порядок и типы)";
} else {
echo "Массивы разные";
}

3. Сравнение с учетом ключей, но без учета порядка

if (array_diff_assoc($array1, $array2) === [] && array_diff_assoc($array2, $array1) === []) {
echo "Массивы содержат одинаковые пары ключ-значение";
} else {
echo "Массивы разные";
}

4. Проверка, что один массив содержит все элементы другого

if (array_diff($array1, $array2) === []) {
echo "Все элементы первого массива есть во втором";
}
if (array_diff($array2, $array1) === []) {
echo "Все элементы второго массива есть в первом";
}

5. Сравнение многомерных массивов

function arrays_are_equal($a, $b) {
return serialize($a) === serialize($b);
}
if (arrays_are_equal($array1, $array2)) {
echo "Многомерные массивы идентичны";
}

6. Проверка совпадения ключей (без учета значений)

if (array_diff_key($array1, $array2) === [] && array_diff_key($array2, $array1) === []) {
echo "Массивы имеют одинаковые ключи";
}

Выбор метода зависит от того, что именно вам нужно сравнить:

  • Только значения → array_diff()
  • Значения и ключи → array_diff_assoc()
  • Полное соответствие → ===
  • Многомерные массивы → serialize()