Должен ли я использовать array_diff_assoc или ===?

Я пытаюсь сравнить два массива, чтобы увидеть, отсортированы они или нет.
В чем разница между array_diff_assoc и сравнением двух массивов с оператором ===?
Это одно и то же?

Например

$arr_a
$arr_b

array_diff_assoc($arr_a, $arr_b)

Такой же как

$arr_a === $arr_b

?

0

Решение

Простой пример говорит нам, что это разные методы:

$a = ['t' => 2, 'p' => 3];
$b = ['p' => 3, 't' => 2];
var_dump($a === $b); // false, arrays are not identical
var_dump(array_diff_assoc($a, $b));
// array(0) {} - means that there's no difference between these arrays
// they have same keys with same values, but in different orders
// and for `===` order is important
2

Другие решения

Есть пара отличий.

array_diff_assoc вернуть массив, содержащий элемент в не найден в б.

$a = [ 1 => 'first' , 2 , 3];
$b = [ 1 => 'first' , 2 , 4 , 3];
var_dump(array_diff_assoc($a,$b) // [ 3 => 3 ] because in a element 3 key is 3 and in b element 3 is 4.

Также array_diff_assoc не работает с многомерным массивом. Для получения дополнительной информации посетите документацию array_diff_assoc

$a === $b возвращать true или false на основе сравнения пары ключ / значение в дополнение к порядку элемента, и он может работать с многомерным массивом. Так что если вам нужно истинное или ложное сравнение, используйте

$a === $b // if order and type is important
$a == $b  // if order and type are not important
1 === '1' // false
1 == '1'  //true

Для получения дополнительной информации посетите документацию Операторы массива

1

По вопросам рекламы [email protected]