我有一个非常讨厌的错误,我无法摆脱。这是引起问题的函数:
function get_info_by_WatIAM($WatIAM, $info) {
$users_info = array();
exec("uwdir -v userid={$WatIAM}", $users_info);
foreach ($users_info as $user_info) {
$exploded_info = explode(":", $user_info);
if (isset($exploded_info[1])){
$infoArray[$exploded_info[0]] = $exploded_info[1];
}
}
return $infoArray[$info]; }
以下是调用函数的内容:
} elseif ( empty(get_info_by_WatIAM($_POST['ownerId'])) ) { ...
我真的很感激任何建议。非常感谢!
如果代码没有意义,这里有一个进一步的解释:exec使用一个程序来存储学校中所有用户的信息。这些包括教师,姓名,用户ID等。$_POST['ownerId']
是一个用户名 - 想法是,在输入用户名后,所有用户的信息都会自动填写
答案 0 :(得分:8)
函数调用周围不需要empty
,实际上empty
只适用于变量而不是函数(如您所见)。如果要测试 pututhiness 可能未设置的变量,则只需要empty
。它在函数调用周围是没有意义的,因为该函数调用必须存在。而只需使用:
} else if (!get_info_by_WatIAM($_POST['ownerId'])) { ...
它做同样的事情。如需深入解释,请阅读The Definitive Guide To PHP's isset And empty。
答案 1 :(得分:3)
empty
只能用于变量,而不能用于表达式(例如调用函数的结果)。文档页面上有一条警告:
注意:
empty()
仅检查变量,因为其他任何内容都会导致解析 错误。换句话说,以下操作无效:empty(trim($name))
。
只是PHP中最好的左派怪癖中的一个。
一种解决方法是将结果存储在变量中并在其上调用empty
,尽管它很笨拙。在此特定情况中,您也可以使用
if (!get_info_by_WatIAM(...))
...虽然一般情况下if (empty($a))
和if(!$a)
不相同。
答案 2 :(得分:-1)
获取此
的值$a = get_info_by_WatIAM($_POST['ownerId'])
然后chack
empty($a)
它会起作用