php检查函数返回

时间:2011-03-18 13:01:13

标签: php function return

我有一个返回循环的函数,现在我想检查这个函数是返回null还是空

这就是功能:

function getCopy($pname){
    function listCopy($block) {
        foreach ($block as $b) {

            echo  '<div class="copy">'.$b->getBlock().'</div>'. "\n";
        }
    }
    $filter=array(
    new DFC(classContent::FIELD_PNAME, $pname, DFC::CONTAINS),
    new DFC(classContent::FIELD_TYPE, 'copy', DFC::CONTAINS),
    );
    $block=classContent::findByFilter(conn(), $filter);
    return listCopy($block);
}

这是我的逻辑:

if( isset (getCopy($pname)) ){
    echo "<label for='copy'>Copy</label><br>"
    ."<textarea name='copy' id='copy' rows='10' cols='60'>".getCopy($pname)
    ."</textarea><br>";
}

isset不起作用,if(getCopy($pname) != '')也不起作用。

关于如何做到这一点的任何想法?

提前致谢

莫罗

4 个答案:

答案 0 :(得分:2)

使用emptyis_null或两者的组合。

或者您可以通过执行if( !getCopy($pname) ) ){ ... }来否定支票,但我会选择上述两个功能中的任何一个。

编辑:正如deceze所指出的,您无法使用empty直接评估返回值,您必须先将其分配给var,然后将该var传递给empty()

$result = getCopy($pname);
if(empty($result)) { ... }

答案 1 :(得分:1)

php函数isset()用于确定变量是否已设置且不为NULL。所以它不起作用是正常的。

答案 2 :(得分:1)

你不能从一个函数“返回一个循环”。您只能返回值。 listCopy函数不返回任何内容,只是输出。因此getCopy也没有返回任何内容。在函数中定义函数通常也是不好的做法,在您的情况下,您将无法两次调用getCopy

我不确定你要做什么,但你需要重新思考你的方法。

答案 3 :(得分:0)

empty()正是您所寻找的,但请记住这两点:

  1. 您不应在函数中声明函数。
  2. 你的函数永远不会返回某些东西,它总是 void ,因为你没有return任何东西。因此empty()将始终评估为真。