2

我有这个简单的功能:

function isMember($uID, $pdo) {
$status = getUserStatus($uID, $pdo);
    if(isAllowed($status['status']))
            return $status['status'];
    return false;
}

现在我正在寻找一种方法来返回 false yes,但也返回变量的值。

我尝试了以下方法,但无论如何它都会使其为空:

return $status['status'] == false;

所以 logi 无论如何都返回 false 但也给我变量的值,即使它是 false,因为 false 不应该意味着空:)

4

4 回答 4

1

返回一个数组,并使用list()方法获取结果:

function isMember($uID, $pdo) {
    $status = getUserStatus($uID, $pdo);

    $statusString = $status['status'];
    $statusFlag = false;
    if(isAllowed($status['status']))
       $statusFlag = true;

    return array($statusFlag,statusString);
}

//usage
list($flag,$msg) = isMember(5,"whatever");
echo "Access: $flag, with message $msg";
于 2013-06-21T10:44:21.177 回答
1

一个函数不能返回多个值,但可以通过 (1) 返回一个数组或 (2) 通过引用传递一个变量并将想要返回的值存储在该变量中来获得类似的结果。

  1. 您将需要以返回包含以下内容的数组的方式编写函数:

    • 你不想返回的值
    • 表示真/假的标志
  2. 通过引用将变量传递到您的函数中,并将状态值存储在该变量中。

    function isMember($uID, $pdo, &statByRef) {
$status = getUserStatus($uID, $pdo);
if(isAllowed($status['status'])) {
return $status['status'];
}
$statByRef = $status['status']; return false;
}

于 2013-06-20T16:31:41.667 回答
0

尝试使用这样的东西:

function isMember($uID, $pdo) {
$status = getUserStatus($uID, $pdo);
    if(isAllowed($status['status'])){
            return $status['status'];
    }
    return false;
} // If isAllowed returns true, then PHP will return $Status['Status'];, if not then PHP will by default return false.

我注意到您没有使用大括号,这使代码难以调试。然后像这样验证:

if (isMember($Var,$AnotherVar) !== false){
 //isMember has not returned false, so PHP is operating within these braces
}

这么简单的事情,应该是最有效的。


如果您想将真/假分配给 $status['status']; 那么你正在执行正确的方法,但错误的操作员。

==是一个比较运算符。不赋值

=是一个赋值运算符,所以你的赋值应该是:

$status['status'] = false;

于 2013-06-21T10:55:00.600 回答
0

False 在 PHP 中返回空,参见http://php.net/manual/en/function.empty.php

来自文档:确定变量是否被认为是空的。如果变量不存在或其值等于 FALSE,则认为该变量为空。如果变量不存在,empty() 不会生成警告。

于 2013-06-20T16:34:52.417 回答