我有一个返回循环的函数,现在我想检查这个函数是返回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) != '')
也不起作用。
关于如何做到这一点的任何想法?
提前致谢
莫罗
答案 0 :(得分:2)
或者您可以通过执行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()
正是您所寻找的,但请记住这两点:
return
任何东西。因此empty()
将始终评估为真。