2

if("||")演算子を使用してPHPステートメントを作成しようとしていますorが、機能していないようです。

   $country_code = "example_country_code";

   if ($country_code != 'example_country_code' || !clientIscrawler()) {
       echo 'the script can be executed';
   }
   else {
       echo 'skipping';
   }

与えられた例では、スキップしてエコーする必要がありますが、そのようにはなりません。私は何が間違っているのですか?

4

5 に答える 5

2

おそらく、ダブルネガはあなたに問題を与えています。次のように書き直してみましょう。

!($country_code == 'example_country_code') || !clientIscrawler()

これは、次のように同等の条件に変えることができます&&

!($country_code == 'example_country_code' && clientIscrawler())

あなたを逆にすることによってifあなたはこれを得るでしょう:

if ($country_code == 'example_country_code' && clientIscrawler()) {
    echo 'skipping';
} else {
    echo 'the script can be executed';
}

したがって、コードでは、が真実である場合にのみスキップを出力しclientIscrawler()ます。

于 2012-11-15T14:30:19.853 に答える
2

ifOR演算子で複数の条件がある場合、その場合、ステートメントをtrueと評価したくない場合、構文は次のようになります。

if(!($something == "something" || $something == 'somethingelse')){
    do stuff...
}

次に例を示します。

$apples = array (
 1 => "Pink Lady",
 2 => "Granny Smith",
 3 => "Macintosh",
 4 => "Breaburn"
);

foreach($apples as $apple){

    // You don't want to echo out if the apple name is "Pink Lady" or "Macintosh"

    if(!($apple == "Pink Lady" || $apple == "Macintosh")){

        echo $apple."<br />";

    }
}

// Output is:
Granny Smith
Breaburn
于 2015-03-09T14:37:45.397 に答える
0

あなたの与えられたコードでは、それはすべてあなたの関数呼び出しに依存します

 !clientIscrawler()

script can be executed関数呼び出しがを返したときにのみ出力を取得しますFALSE。私はそれがTRUE今戻ってきていると思います、それがあなたが望ましい出力を得ていない理由です。

于 2012-11-15T14:25:14.237 に答える
-2

多分これはあなたを助けることができます:

if ( ($country_code != 'example_country_code') || clientIscrawler() == false) {
于 2012-11-15T14:30:28.263 に答える
-3

この方法を試してください:

if ( ($country_code != 'example_country_code') || !clientIscrawler()) { ...
于 2012-11-15T14:18:19.663 に答える