为什么函数为空似乎清空结果?

时间:2018-06-09 19:06:43

标签: php is-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 个答案:

答案 0 :(得分:2)

如果没有完整的代码,就不可能肯定地说,而是做出有根据的猜测:

如果您没有empty()检查,则第一次调用代码/功能时会触发exit(),并设置$data

当你添加empty时,在if语句中结束的前一个调用不再这样做(因为为该数组设置了name),因此,不会产生任何输出或对exit的调用(因此代码一直在运行)。

然后代码运行,直到使用未设置$data['name']的数组执行测试,执行var_dump(现在是一个空数组)并退出。

您对空的调用不会删除任何内容,您只是稍后在应用程序的运行中转储不同的数据集。