2017-10-29 14 views
0

in_array(0, array("pop"))が1を返しますか?なぜin_array(0、*)は常に1を返します

docsを参照してください。明らかに0は配列内の値ではなく、0またはFALSEを返します。

+2

を返す厳密な比較でありますヘイスタック。 - http://php.net/en/in_array – splash58

+1

あなたがすでに提供しているマニュアルでは、文字列 '厳密に設定されていない限り、ゆるやかな比較を使って針のために干し草を検索します。'あなたは何が__loose comparison__なのか知っていますか? –

+0

これは機能であり、バグではありません。私の推測は '(int) 'pop' = 0'です。 – ArtisticPhoenix

答えて

1

in_array($needle, $haystack, $strict = FALSE)ルース比較を厳密に設定しない限り、針用ヘイスタックを検索します。 3番目の厳密な引数を指定しないと、値はphpの緩やかなコンパイルルールに従って比較されます。 http://php.net/manual/en/types.comparisons.phpにアクセスしてください。この緩やかな比較動作が文書化されています。

0 == "pop"はTRUE

0 === "pop"を返すルーズ比較は厳密第三パラメータがTRUEに設定されている場合、in_array()関数はまた、針の種類をチェックするFALSE

+0

downvoteの説明をお願いしますか? – Robert

関連する問題