我有这个简单的功能:
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不应该是空的:)
答案 0 :(得分:1)
函数不能返回多个值,但可以通过(1)返回数组或(2)通过引用传递变量并存储要在该变量中返回的值来获得类似的结果。
您需要以返回包含以下内容的数组的方式编写函数:
通过引用将变量传递给您的函数,并将状态值存储在该变量中。
function isMember($uID, $pdo, &statByRef) {
$status = getUserStatus($uID, $pdo);
if(isAllowed($status['status'])) {
return $status['status'];
}
$statByRef = $status['status'];
return false;
}
答案 1 :(得分: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";
答案 2 :(得分:0)
False中的False为空,请参阅http://php.net/manual/en/function.empty.php
来自文档: 确定变量是否被视为空。如果变量不存在或者其值等于FALSE,则该变量被视为空。如果变量不存在,empty()不会生成警告。
答案 3 :(得分: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;