Задать вопрос
@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% равны по ключам.
На этом я и остановился. Извращение какое-то. Просто не верится что нет другого способа решить, казалось бы простую и распространенную задачу, - равны ли массивы по ключам.
  • Вопрос задан
  • 139 просмотров
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 1
@metnee Автор вопроса
Вариант:
if( count($firstArr) == count($secondArr) && $firstArr == $firstArr+$secondArr )

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

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

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽