@froggush

Как передать в функцию аргумент по ключу массива без warning?

Появилась необходимость создать функцию вида

function checkValue($item) {
    return isset($item) && $item !== '';
};


При передаче в функцию аргумента в виде $arrName['firstKey']['secondKey'] (количество ключей может быть разным) на старнице появляются warning о том, что я пытаюсь обратиться к несуществующему ключу. Я это знаю -- функция для того и нужна, чтобы определить этот факт.

Как избавиться от таких warning-ов?
  • Вопрос задан
  • 119 просмотров
Решения вопроса 1
@WitER
Стоит начать с того, что в вашей функции $item всегда будет задана - ведь вы её объявили вместе с функцией - читай аргументы функций.
Если вам нужно проверить существует-ли ключ массива(в том числе и вложенный) и не пуст ли он, используйте empty($arrName['first']['second']), но учтите, что эта функция вернет true если значение элемента будет равно нулю.
Если вам нужно просто узнать, что элемент массива существует и (как ниже заметили, не null), тогда просто: isset($arrName['first']['second']).

Спасибо, Сергей delphinpro за замечание!
Для проверки существования ключа массива действительно можно использовать array_key_exists('first', $arrName), заметьте эта функция не работает с многоуровневыми массивами. Для проверки существования вложенных ключей, которые могут принимать значения null || 0 || '' лучше использовать другой подход, возможно комбинировать этот метод с фильтрацией.
Если нужно отфильтровать массив от пустых значений, то можно использовать array_filter.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Adamos
@Adamos
Можно разложить в аргументах функции массив и ключи к нему, но ради такой фигни столько мороки...
Если уж все равно переписывать каждое обращение - лучше понять, почему такое получается и избавиться от него в принципе.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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