1

私は次のコードビットを持っています

$cond = '0'; if($cond) echo $cond;

$cond = '0'; if($cond) echo $cond;

$cond = '0 AND 0'; if($cond) echo $cond;

最初のものは期待されることだけを行い、残りは行いません。これらはどのように同じ動作を実行できますか。特に、3 番目のケースの状態をどのように評価できますか。

4

4 に答える 4

1

strpos を使用して $cond で 0 を検索するだけです

$cond = '0 AND 0';
$search = '0';

if (strpos($cond, $search) !== false) echo $cond; 

http://php.net/manual/en/function.strpos.php

于 2012-11-22T09:18:14.180 に答える
1

まず、何が起こっているのかを説明します。いずれの場合も、ブール式ではなく文字列をテストしています。空でない文字列はtrue、別の型に変換できる場合を除き、常に評価されます。

  • '0'整数0などに変換されますfalse
  • '0 '文字列であることを明示的に示すスペースがあるため、文字列のままになります。true
  • '0 AND 0'明らかに文字列であり、trueあまりにも

あなたが何を達成しようとしているのか、他のケースを処理する必要があるのか​​ どうかはわかりませんが、必要と思われるのはeval() functionです。ドキュメントで述べられているように、その使用は非常に危険$condであるため、可能であれば回避する方法を確認してください。

$cond = '0 AND 0';
if(eval('return '.$cond.';'))
    echo $cond;
于 2012-11-22T09:27:53.207 に答える
1

試す

if (intval($cond)) echo $cond;

しかし、なぜそれをしたいのですか?

于 2012-11-22T09:14:33.820 に答える
0

2つ目を試してください

 if ((trim($cond)){
   echo $cond;
    }
于 2012-11-22T09:16:27.397 に答える