caw*_*caw 9 php variables conditional
这四个PHP语句有什么区别?
if (isset($data)) {
if (!empty($data)) {
if ($data != '') {
if ($data) {
Run Code Online (Sandbox Code Playgroud)
他们都这样做吗?
jlb*_*jlb 22
查看PHP手册:http://www.php.net/manual/en/types.comparisons.php
Expression gettype() empty() is_null() isset() if($x) $x = ""; string TRUE FALSE TRUE FALSE $x = null; NULL TRUE TRUE FALSE FALSE var $x; NULL TRUE TRUE FALSE FALSE $x undefined NULL TRUE TRUE FALSE FALSE $x = array(); array TRUE FALSE TRUE FALSE $x = false; boolean TRUE FALSE TRUE FALSE $x = true; boolean FALSE FALSE TRUE TRUE $x = 1; integer FALSE FALSE TRUE TRUE $x = 42; integer FALSE FALSE TRUE TRUE $x = 0; integer TRUE FALSE TRUE FALSE $x = -1; integer FALSE FALSE TRUE TRUE $x = "1"; string FALSE FALSE TRUE TRUE $x = "0"; string TRUE FALSE TRUE FALSE $x = "-1"; string FALSE FALSE TRUE TRUE $x = "php"; string FALSE FALSE TRUE TRUE $x = "true"; string FALSE FALSE TRUE TRUE $x = "false"; string FALSE FALSE TRUE TRUE
如您所见,if(!empty($x))等于if($x)并if(!is_null($x))等于if(isset($x)).作为仿佛远$data != ''去,它是TRUE如果$data不是NULL,'',FALSE或0(松散比较).
if (isset($data)) {
Run Code Online (Sandbox Code Playgroud)
变量刚刚设置 - 在该行之前我们声明了名为'data'的新变量,即$ data ='abc';
if (!empty($data)) {
Run Code Online (Sandbox Code Playgroud)
变量充满了数据.它不能有空数组,因为它$data有数组类型但仍然没有数据,即$ data = array(1); 不能为null,空字符串,空数组,空对象,0等.
if ($data != '') {
Run Code Online (Sandbox Code Playgroud)
变量不是空字符串.但也不能是空值(以上例子).
如果我们想比较类型,请使用!==或===.
if ($data) {
Run Code Online (Sandbox Code Playgroud)
变量填充任何数据.同样的事情!empty($data).