簡體   English   中英

為什么空數組比任何數字都大?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM