Иногда возникает ситуация, когда нужно проверить существует ли заданный ключ в массиве или нет. Предположим, что если ключа нет, нужно выдать сообщение об ошибке. Если такой ключ один, то
1 2 3 4 | $myArr = array(); if (!isset($myArr['needle'])) { printf('Ключ "%s" не найден!!', 'needle'); } |
легко решит эту задачу. Однако когда ключей несколько стоит использовать array_diff:
1 2 3 4 5 6 | $requiredParams = array('needle', 'anotherOne'); // список ключей $myArr = array('someKey'); if ($params = array_diff($requiredParams, array_keys($myArr))) { printf('Следующие ключи не найденны: %s!!', implode(', ', $params)); } |
В случае если все обязательные ключи найденны, результат выполнения функции будет равен пустому массиву (при преобразовании в булев, которое происходит автоматом внутри if(), пустой массив интерпритируется как false), соответственно блок не будет выполнен. Если же массив непустой, то блок if() будет выполнен.
Данный метод очень удобен, если вы имеете функцию/метод, который получает одним из аргументов массив, в котором должны содержаться какие-либо обязательные ключи, для корректного исполнения дальшейшего кода.
Удачных выходных!

no comment untill now