1

我有一个非常讨厌的错误,我无法摆脱。这是导致问题的函数:

    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']是一个用户名——这个想法是,输入用户名后,所有用户的信息都会自动填写

4

3 回答 3

8

您不需要empty围绕函数调用,实际上empty只适用于变量而不是函数(如您所见)。仅empty当您想测试可能未设置thruthiness的变量时才需要。围绕函数调用毫无意义,因为该函数调用必须存在。而是简单地使用:

} else if (!get_info_by_WatIAM($_POST['ownerId'])) { ... 

它做同样的事情。如需深入解释,请阅读PHP 的 isset 和 empty 权威指南

于 2012-06-18T13:10:51.220 回答
3

empty只能用于变量,不能用于表达式(例如调用函数的结果)。文档页面上有一个警告:

笔记:

empty()仅检查变量,因为其他任何内容都会导致解析错误。换句话说,以下内容将不起作用:empty(trim($name)).

只是 PHP 最独特的怪癖之一。

一种解决方法是将结果存储在一个变量中并调用empty它,尽管它很笨重。在这种特定情况下,您还可以使用

if (!get_info_by_WatIAM(...))

...虽然在一般情况下,if (empty($a))并不if(!$a)等同。

于 2012-06-18T13:09:49.177 回答
-1

得到这个值

$a = get_info_by_WatIAM($_POST['ownerId'])

然后破解

empty($a)

它会起作用的

于 2012-06-18T13:10:22.700 回答