如果不存在
empty会报错的isset是检测变量是否存在的

解决方案 »

  1.   

    empty汉语空的,
    if($str)
    与if(!empty($str))
    是等价的
      

  2.   

    不存在的话
    empty也不会报错
    我认为如果变量为非空非零条件时,使用
    if(isset($var)) 等于 if(!empty($var))
    但当变量可以传递0,null等参数时。就要使用isset了
      

  3.   

    to php_love
    这两个是不一样的!
    第一个会报错,第二个不会!
      

  4.   

    可能你关闭了
    是一个notice
      

  5.   

    <?php
    $var = 0;// 结果为 true,因为 $var 为空
    if (empty($var)) {  
       echo '$var is either 0 or not set at all';
    }// 结果为 false,因为 $var 已设置
    if (!isset($var)) { 
       echo '$var is not set at all';
    }
    ?> 
    -------------------up from manual
    另外在我的机器上   如果写下这样的语句 if(!isset($hot_num)) $hot_num = 1;会报错的
      

  6.   

    哈哈,哪有这么麻烦啊
    if (!$var) {
       return TRUE;
    }
    else {
       return FALSE;
    }
      

  7.   

    哦,错了,是这样
    if ($var) {
       return TRUE;
    }
    else {
       return FALSE;
    }
      

  8.   

    哦。我关闭了NOTICE,所以用empty没有错误提示。呵呵!但请问,如果忽略NOTICE,如果$var不存在,empty是否返回TRUE?谢谢!
      

  9.   

    你自已动手不就行了?
    另外empty是不会有错误提示的,
      

  10.   

    <?php// 以下测试皆在notice报错打开的情况下测试,因为这样开发环境更严格,有利于减少bug和调试程序// 在关闭notice 报警时,用if($var),不论之前$var没有被赋过值都不会有提示
    // 在打开notice 之后(通常来说开发时应当打开,毕竟使用一个示定义过的变量不规范),会有提示出现
    // 比如
    // $var = 1; //如果少了这一行,会有提示 Notice: Undefined variable: var in E:\www\test\isset.php on line 6
    if($var==1)
    {
        echo "ok1<br>";
    }
    else
    {
        echo "bad1<br>";
    }// 而如下的程序则更健壮
    // 因为它会首先判断$var这个变量是否存在,再进行值的判断
    if(isset($var)&&$var==1)
    {
        echo "ok2<br>";
    }
    else
    {
        echo "bad2<br>";
    }// 如下程序也不会有提示信息,即使之前$var这个变量根本不存在
    // 因为empty本身就会去检查这个$var是否存在或是值是否为空
    // 因此,只要不是需要传递0这样的参数,用empty是很安全的
    if(!empty($var)&&$var == 1)
    {
        echo("ok3<br>");
    }
    else
    {
        echo("bad3<br>");
    }// 如果给$var赋上0,再用empty就不能顺利执行了
    // 此时应当用isset
    $var = 0;
    if(!empty($var)&&$var == 0)
    {
        echo("ok4<br>");// 不会执行
    }
    else
    {
        echo("bad4<br>");
    }// 而如下的可以顺利执行
    if(isset($var)&&$var == 0)
    {
        echo("ok5<br>");// 可以执行
    }
    else
    {
        echo("bad5<br>");
    }// 此外,isset在用于数组元素的存在判断上也是很有用的
    // 比如
    if(isset($_POST['act']))
    {
        echo($_POST['act']."<br>");
    }
    else
    {
        echo("none1<br>");
    }// 用empty试试,会发现是等价的,但同上,如果此元素的值是0就有可能不会按照原
    // 意执行,除非你认为0是应当过滤的
    if(!empty($_POST['act']))
    {
        echo($_POST['act']."<br>");
    }
    else
    {
        echo("none2<br>");
    }// 直接使用,会用两条提示信息出现
    if(!$_POST['act'])
    {
        echo($_POST['act']."<br>");
    }
    else
    {
        echo("none3<br>");
    }
    ?>