空の配列と任意の数を比較してtrue
を返すと、PHPのフードの中で何が起こるか説明できますか?空の配列が何よりも大きいのはなぜですか?
var_dump([] > -1); // true
var_dump([] > 0); // true
var_dump([] > 222222222) // true
これをPHP 7.0,7.1,5.6でテストしました。
空の配列と任意の数を比較してtrue
を返すと、PHPのフードの中で何が起こるか説明できますか?空の配列が何よりも大きいのはなぜですか?
var_dump([] > -1); // true
var_dump([] > 0); // true
var_dump([] > 222222222) // true
これをPHP 7.0,7.1,5.6でテストしました。
まず、この種の比較をしないでください。これを行うコードは非常に疑わしく、おそらく非常に壊れています。
あなたの質問に答えるには:その理由は、アレイと非配列の比較で定義された動作がset out in the documentationであるためです。配列は、比較されるスカラー値よりも常に大きいです。オブジェクトは常に配列よりも大きく、配列は常にスカラー(整数など)よりも大きくなります。他の比較は、ドキュメントで定義されているさまざまな方法で処理されます。ドキュメントから
:様々なタイプの
比較
Type of Operand 1 Type of Operand 2 Result ... array anything array is always greater
いくつかのサンプルコードとdemo:the PHP docsパー
var_dump(
[] > -1, //true
[] > 0, // true
[] > 222222222, // true
[] > [], // false, obviously
[] > new stdClass(), //false, object wins
new stdClass() > [] // true, object wins
);
実生活でこの種の比較を使用することについては、私はあなたに絶対に同意します。 prodでそれを使用しました。私が心配していたのは、PHPがある種のジャグリングを作ったかどうかということでしたが、これは厳密なルールなので、頼りにしなければなりません。とにかく、ありがとう、あなたの答えをたくさん。 –
:
配列を使用すると、アレイと数を比較する理由の質問です
常に大きいですか? – Eric
http://php.net/manual/en/language.operators.comparison.php#language.operators.comparison.types – Rizier123