0

おそらく奇妙なことを1行で実行できることを願っています。

2つのことをチェックするIFステートメントが必要です。

  • 最初に、変数$ loggedInfo ['status']が設定されており、「client」と等しいかどうかを確認します。
  • 2つ目は、変数$ loggedInfo ['address1']が設定されており、空白であることを確認します。

その理由は、最初の変数がスタッフと等しい場合、「address1」変数は存在しないためです。

私は以下を持っていましたが、スタッフとしてログインすると、それでもアドレスをチェックします1

if((isset($loggedInfo['status'])=="client")&&(!$loggedInfo['address1'])){
  //Do something
}
4

3 に答える 3

3

issetはtrueまたはfalseを返します。実際の値を個別に確認する必要があります

if(
 isset($loggedInfo['status']) && $loggedInfo['status']=="client" &&
 isset($loggedInfo['address1']) && trim($loggedInfo['address1']) != ''
)
{
  //Do something
}
于 2013-02-19T08:41:29.410 に答える
1

isset()の戻り値を文字列と比較することはできません。これは、文字列"client"と等しくなることはないためです。http://php.net/manual/en/function.isset.phpを引用すると、その戻り値は「TRUEvarが存在し、それ以外の値を持つNULL場合FALSE」です。

最初に設定されているかどうかを確認します

if ((isset($loggedInfo['status']) === true) && ($loggedInfo['status'] === "client") && (empty($loggedInfo['address1']) === true)) {
    // Do something
}

empty()これからの重要なポイントは、マニュアルhttp://www.php.net/manual/en/function.empty.phpのように、使用するすべての関数の戻り値を検索することです。これにより、将来的に多くの頭痛の種を減らすことができます。

于 2013-02-19T08:41:49.673 に答える
1
if((isset($loggedInfo['status']) && $loggedInfo['status']=="client") &&(empty($loggedInfo['address1'])){
  //Do something
}

isset()指定された変数が現在のスコープでnull以外の値で定義されている場合、TRUEを返します。

empty()指定された変数が現在のスコープで定義されていない場合、または「空」と見なされる値で定義されている場合は、TRUEを返します。これらの値は次のとおりです。

NULL    // NULL value
0       // Integer/float zero
''      // Empty string
'0'     // String '0'
FALSE   // Boolean FALSE
array() // empty array

PHPのバージョンによっては、プロパティのないオブジェクトも空と見なされる場合があります。

于 2013-02-19T08:57:18.447 に答える