空,isset,和!=“”

时间:2013-06-10 00:51:51

标签: php

可能是一个愚蠢的问题,但我似乎无法找到一个直接的答案。

$id != ""!empty($id)相同吗?

使用if(isset($id) && !empty($id))确定变量是否设置且不为空/空也是正确的吗?

5 个答案:

答案 0 :(得分:6)

没有。 empty()涵盖了除空字符串之外的许多其他条件。 http://php.net/manual/en/function.empty.php来自文档:

  • ""(空字符串)
  • 0(0为整数)
  • 0.0(0作为浮动)
  • "0"(0为字符串)
  • NULL
  • FALSE
  • array()(空数组)
  • $var;(声明的变量,但没有值)

另外,如果你想告诉变量是否为“空”,那么只需要empty()。也不需要isset()

答案 1 :(得分:2)

Humm:简而言之,

if($var)表示如果$var的值为 TRUE ,则

相反,

if(!$var)表示,如果$var的值为 FALSE

if(empty($var))if(!empty($var))类似地尝试检查$var是否具有任何值,或者它们是否为空。

$var = ''; // false 
$var = '1' // true
$var; // empty
$var = '1' // not empty

更多信息,请访问PHP Manual

一些例子包括:

<?php
var_dump((bool) "");        // bool(false)
var_dump((bool) 1);         // bool(true)
var_dump((bool) -2);        // bool(true)
var_dump((bool) "foo");     // bool(true)
var_dump((bool) 2.3e5);     // bool(true)
var_dump((bool) array(12)); // bool(true)
var_dump((bool) array());   // bool(false)
var_dump((bool) "false");   // bool(true)
?>

答案 2 :(得分:1)

对于未定义的变量,

empty将返回true,因此无需仔细检查它。

只需使用if ( ! empty($id) )

即可

答案 3 :(得分:1)

  

$ id!=“”与!empty($ id)相同吗?

不,empty测试所有形式的空。因此它也会在0null上触发。使用!=与空字符串进行比较将根据$id的字符串转换执行比较。

  

使用if(isset($ id)&amp;&amp;!empty($ id))确定变量是否设置且不为空/ null也是正确的吗?

不是真的,这个条件只测试$id是否已设置但是不包含空字符串,或字符串"0",或整数/浮点0值,或者是会转换为整数0,例如布尔false

有一个非常详尽的列表over on PHP.net,其值被视为empty

答案 4 :(得分:0)

首先,$id != ""!empty($id)不同。不同之处在于,如果未设置$ id,则第一个示例将抛出通知,表示您正在使用未定义的变量而第二个示例将不会。

其次,如果同时使用isset()和empty()是正确的,但它是多余的,因为如果变量未定义,则empty将不会发出通知。

希望这对你有所帮助!

祝你好运,编码愉快:P