2

私はこの単純な機能を持っています:

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

今、私は偽のはいを返す方法を探していますが、変数の値も返す方法を探しています。

次のことを試しましたが、とにかく空になります:

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
}

最も効果的なはずのそのような単純なこと。


true/false を $status['status']; に割り当てたい場合。次に、正しい方法を実行していますが、演算子が間違っています。

==比較演算子です。課題ではない

=は代入演算子であるため、代入は次のようにする必要があります。

$status['status'] = false;

于 2013-06-21T10:55:00.600 に答える