2016-12-14 57 views
2

空の配列と任意の数を比較してtrueを返すと、PHPのフードの中で何が起こるか説明できますか?空の配列が何よりも大きいのはなぜですか?

var_dump([] > -1); // true 
var_dump([] > 0); // true 
var_dump([] > 222222222) // true 

これをPHP 7.0,7.1,5.6でテストしました。

+3

常に大きいですか? – Eric

+2

http://php.net/manual/en/language.operators.comparison.php#language.operators.comparison.types – Rizier123

答えて

3

まず、この種の比較をしないでください。これを行うコードは非常に疑わしく、おそらく非常に壊れています。

あなたの質問に答えるには:その理由は、アレイと非配列の比較で定義された動作がset out in the documentationであるためです。配列は、比較されるスカラー値よりも常に大きいです。オブジェクトは常に配列よりも大きく、配列は常にスカラー(整数など)よりも大きくなります。他の比較は、ドキュメントで定義されているさまざまな方法で処理されます。ドキュメントから

:様々なタイプの

比較

Type of Operand 1 Type of Operand 2 Result 
... 
array    anything    array is always greater 

いくつかのサンプルコードとdemothe PHP docsパー

var_dump(
    [] > -1, //true 
    [] > 0, // true 
    [] > 222222222, // true 
    [] > [], // false, obviously 
    [] > new stdClass(), //false, object wins 
    new stdClass() > [] // true, object wins 
    ); 
+0

実生活でこの種の比較を使用することについては、私はあなたに絶対に同意します。 prodでそれを使用しました。私が心配していたのは、PHPがある種のジャグリングを作ったかどうかということでしたが、これは厳密なルールなので、頼りにしなければなりません。とにかく、ありがとう、あなたの答えをたくさん。 –

2

配列を使用すると、アレイと数を比較する理由の質問です

関連する問題