Почему функция empty, кажется, очищает результат?
У меня странный результат в PHP.
if( $mandatory_param === "name" ){
var_dump( $data );
exit();
}
//output : array(6) { ["name"]=> string(4) "plan" ["class"]=> string(33) "Path\Plan" ["dbtable"]=> string(5) "plans" ["getter"]=> string(7) "plan_id" ["editable"]=> string(4) "true" ["slug"]=> string(2) "pl" }
Но когда я пытаюсь empty
Функция для проверки массива, результат изменяется, даже если первый вывод показывает это: ["name"]=> string(4) "plan"
if( $mandatory_param === "name" && empty( $data[ $mandatory_param ] ) ){
var_dump( $data );
exit();
}
//Output : array(0) { }
Зачем? empty()
Кажется, функция очищает мой массив, чтобы не проверять, пустой ли он.
1 ответ
Без полного кода невозможно сказать наверняка, но сделать обоснованное предположение:
Когда у вас нет empty()
проверить exit()
срабатывает при первом вызове фрагмента кода / функции, и $data
установлено.
Когда вы добавляете empty
предыдущий вызов, который закончился внутри оператора if, больше не делает этого (так как name
устанавливается для этого массива) и, следовательно, не производит никакого вывода или вызова exit
(поэтому код продолжает работать).
Затем код выполняется до тех пор, пока тест не будет выполнен с массивом, который не имеет $data['name']
установить, выполняет var_dump
(на том, что сейчас является пустым массивом) и выходит.
Ваш вызов empty ничего не удаляет, вы просто сбрасываете другой набор данных позже при запуске приложения.