2016-04-18 10 views
1

私は常にこれらの2例を含んでいる変数を持っている:falseと0の違いはどうやって判断できますか?

  • false

現実に私の変数がこれです(それはまた、0することができます):

$index = array_search(1, array_column($var, 'box')); 
//=> the output could be something like these: false, 0, 1, 2, ... 

今、私は$indexを検出したいfalseまたは他のものです。どのように私はそのような条件を実装できますか?

これらのどれも動作しません注意する必要があります。

if (empty($index)) { } 
if (!isset($index)) { } 
if (is_null($index)) { } 

そして私は、この条件をしたい:

if (?) { // $index is false } else { // $index is a number (even 0) } 
+2

'$インデックス== false'を – Rizier123

+0

@ Rizier123 EMM、面白い、私はそれをはるかに困難になりますと思いました。 – stack

答えて

1

あなたは、PHP、同一のオペレータ===使用することができます!彼らは同じ型である場合、これはfalseを返します

if (false === 0) 

を。型ジャグリングが起こる==とは異なり、false0と同じではありません。

if ($index === false) { 
    // $index is false 
} else { 
    // $index is a number (even 0) 
} 

同じオペレータ===と比較演算子==の違いに関するさらに詳しい情報:!How do the PHP equality (== double equals) and identity (=== triple equals) comparison operators differ?

1

は...

if(false == 0) 
を===演算子を使用します

これは0をfalseにキャストし、falseを返します。== false

if(false === 0) 

これはキャストされず、ゼロと比較してfalseになりますが、これは同じではありません。使用し、等しくないために

==の代わり===

+0

falseの場合=== 0は常にブール値と整数を比較し、決して同じではないので038です。 –

+0

@bub正しいです。私はfalse === 0はfalse、false == 0は真であることを指摘していました。 – kainaw

関連する問題