这四个PHP语句之间有什么区别?
if (isset($data)) {
if (!empty($data)) {
if ($data != '') {
if ($data) {
他们都这样做吗?
答案 0 :(得分: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
松散的比较)。
答案 1 :(得分:9)
if (isset($data)) {
变量刚刚设置 - 在该行之前我们声明了名为'data'的新变量,即 $ data ='abc';
if (!empty($data)) {
变量充满了数据。它不能有空数组,因为$data
有数组类型但仍然没有数据,即$ data = array(1);
不能为空,空字符串,空数组,空对象,0等
if ($data != '') {
变量不是空字符串。但也不能是空值(例子如上)
如果我们想要比较类型,请使用!==
或===
。
if ($data) {
变量用任何数据填写。与!empty($data)
相同。
答案 2 :(得分:4)
它们不一样。
如果设置了变量,则为true。变量可以设置为空白,这是真的。
如果变量设置为且不等于空字符串,0,'0',NULL,FALSE,空数组,则为true。它显然与isset
不一样。
如果变量不等于空字符串,如果变量未设置为空字符串。
如果变量强制为true,如果变量未设置,则强制为false。
答案 3 :(得分:0)
if(isset($ data)) - 确定是否设置了变量(未下注'unset()'
且不是NULL
。
if(!empty($ data)) - 如果$ data为'',0,false或NULL,则类型不可知检查为空,它将返回true。
if($ data!=''){这是一个字符串类型,可以检查$ data是否等于空字符串
if($ data){this is a true or false(aka:0 or 1)