私は次のコードビットを持っています
$cond = '0'; if($cond) echo $cond;
$cond = '0'; if($cond) echo $cond;
$cond = '0 AND 0'; if($cond) echo $cond;
最初のものは期待されることだけを行い、残りは行いません。これらはどのように同じ動作を実行できますか。特に、3 番目のケースの状態をどのように評価できますか。
私は次のコードビットを持っています
$cond = '0'; if($cond) echo $cond;
$cond = '0'; if($cond) echo $cond;
$cond = '0 AND 0'; if($cond) echo $cond;
最初のものは期待されることだけを行い、残りは行いません。これらはどのように同じ動作を実行できますか。特に、3 番目のケースの状態をどのように評価できますか。
strpos を使用して $cond で 0 を検索するだけです
$cond = '0 AND 0';
$search = '0';
if (strpos($cond, $search) !== false) echo $cond;
まず、何が起こっているのかを説明します。いずれの場合も、ブール式ではなく文字列をテストしています。空でない文字列はtrue
、別の型に変換できる場合を除き、常に評価されます。
'0'
整数0
などに変換されますfalse
'0 '
文字列であることを明示的に示すスペースがあるため、文字列のままになります。true
'0 AND 0'
明らかに文字列であり、true
あまりにもあなたが何を達成しようとしているのか、他のケースを処理する必要があるのか どうかはわかりませんが、必要と思われるのはeval() functionです。ドキュメントで述べられているように、その使用は非常に危険$cond
であるため、可能であれば回避する方法を確認してください。
$cond = '0 AND 0';
if(eval('return '.$cond.';'))
echo $cond;
試す
if (intval($cond)) echo $cond;
しかし、なぜそれをしたいのですか?
2つ目を試してください
if ((trim($cond)){
echo $cond;
}