为什么函数 empty 似乎清空了结果?
Why the function empty seems to empty the result?
我在 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()
函数似乎清空了我的数组而不是检查它是否为空。
没有完整的代码,无法肯定地说,但可以做出有根据的猜测:
当你没有empty()
检查时,exit()
在你第一次调用这段代码/函数时被触发,并且$data
被设置。
当您添加 empty
时,之前在 if 语句中结束的调用不再这样做(因为为该数组设置了 name
),因此不会不会产生任何输出或调用 exit
(因此代码保持 运行ning)。
代码然后 运行s 直到使用未设置 $data['name']
的数组执行测试,执行 var_dump
(现在是空数组)并退出。
您对 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()
函数似乎清空了我的数组而不是检查它是否为空。
没有完整的代码,无法肯定地说,但可以做出有根据的猜测:
当你没有empty()
检查时,exit()
在你第一次调用这段代码/函数时被触发,并且$data
被设置。
当您添加 empty
时,之前在 if 语句中结束的调用不再这样做(因为为该数组设置了 name
),因此不会不会产生任何输出或调用 exit
(因此代码保持 运行ning)。
代码然后 运行s 直到使用未设置 $data['name']
的数组执行测试,执行 var_dump
(现在是空数组)并退出。
您对 empty 的调用不会删除任何内容,您只是稍后在应用程序的 运行 中转储了一组不同的数据。