@metnee

Как правильно точно проверить равны ли массивы по ключам?

Данны массивы:
$firstArr["name"] = 20;
$firstArr["age"] = 1;
$firstArr["lastname"] = 3;

$secondArr["age"] = 2;
$secondArr["lastname"] = 3;
$secondArr["name"] = 10;
$secondArr["drisnya"] = 13;

Мне нужно точно узнать полностью ли совпадают массивы по ключам.

Спешу опередить вашу мысль, следующее меня не устраивает:
if(array_keys($secondArr) == array_keys($firstArr))

Т.к. индесы разные получаются от array_keys, потому что элементы массивов могут создаваться в любом порядке. Поэтому это условие выдаст false.

Функция array_diff_key() тоже не подходит, потому что она выдает разницу первого массива от второго, но не наоборот. Т.е. эта функция не заметит наличие лишнего элемента массива переданного в качестве второго аргумента.
Ну подходит только в следующем варианте:
if(array_diff_key($firstArr,$secondArr)&&array_diff_key($secondArr,$firstArr))

(Во втором условии, в функции аргументы местами поменяны)
Т.е. если в первом условии пустой массив и во втором пустой - то массивы 100% равны по ключам.
На этом я и остановился. Извращение какое-то. Просто не верится что нет другого способа решить, казалось бы простую и распространенную задачу, - равны ли массивы по ключам.
  • Вопрос задан
  • 138 просмотров
Решения вопроса 1
@metnee Автор вопроса
Вариант:
if( count($firstArr) == count($secondArr) && $firstArr == $firstArr+$secondArr )

Но все-же выберу вариант почитабельнее, от kruslan
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
gobananas
@gobananas
finishhim.ru
Да всё вокруг того же будет, например:
if(array_keys($array1) === array_keys($array2)){

}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы