[英]Why is an empty array greater than any number?
有人能解釋一下 PHP 在將空數組與任何數字進行比較並返回true
什么嗎?
var_dump([] > -1); // true
var_dump([] > 0); // true
var_dump([] > 222222222) // true
我在 PHP 7.0、7.1 和 5.6 中對此進行了測試。
首先,請永遠不要做這種比較; 執行此操作的代碼非常可疑,並且可能非常損壞。
回答您的問題:原因是數組與非數組的比較具有文檔中規定的定義行為。 該數組始終大於與其進行比較的任何標量值。 對象總是大於數組,數組總是大於標量(如整數)。 其他比較以多種方式處理,如文檔中所定義。
從文檔:
與各種類型的比較
Type of Operand 1 Type of Operand 2 Result ... array anything array is always greater
一些示例代碼和演示:
var_dump(
[] > -1, //true
[] > 0, // true
[] > 222222222, // true
[] > [], // false, obviously
[] > new stdClass(), //false, object wins
new stdClass() > [] // true, object wins
);
根據PHP 文檔:
數組總是更大
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.