你知道爲什麼<?= count(false) ?>
返回1
?爲什麼count(false)返回1?
回答
因爲false
也是一個值,如果計數()沒有得到數組,但一個有效的變量,它返回true
這是1
。
$result = count(null);
// $result == 0
$result = count(false);
// $result == 1
「隨機」評論:這就像如果(0)返回false並且如果(-1)返回true。 – 2013-03-10 21:17:43
你近了:它不會返回'true'。 'count'需要一個數組,如果'var'不是一個,它會被轉換成一個數組。由於'false'是一個有效的值,因此它會被轉換爲一個元素的數組:一個值爲「false」的元素。 http://justinsomnia.org/2007/12/in-php-countfalse-returns-1/ – 2013-03-13 17:34:29
它看起來對我來說,PHP是防止從使用count()
,以確定是否一個元素是一個數組或一個對象之一。他們有專門的功能(is_array()
,is_object()
),它可能會誘惑天真地使用count()
並檢查false
條件來確定數組或對象。相反,PHP使非對象,非數組返回1
(這是truthy),以便這種方法不能以這種方式天真地使用(因爲0
是一個空的數組/對象的有效,虛假的結果)。
這可能是爲什麼在你描述的情況下,函數返回值的原因。
他沒有試圖確定它是一個數組還是對象,他試圖確定數組的長度,並質疑爲什麼0記錄或不存在的數組仍然返回1。 – jerebear 2017-09-22 05:10:42
一個很好的方式,在你的心中記住這一點:
- 計數(假的)基本上是一樣的:
- 計數(「一個布爾值」),因此有「ONE」布爾值作爲結果。
- 1. 爲什麼count函數爲false返回1,爲NULL爲0
- 2. JAVA - 爲什麼== 「1」 返回false
- 3. Javascript - 爲什麼NaN(1 + null)返回false?
- 4. 爲什麼string.contains()返回false?
- 5. jquery返回false - 爲什麼?
- 6. 爲什麼setFieldProperty返回false?
- 7. Properties.containsKey返回false,爲什麼?
- 8. 爲什麼File.Exists返回false?
- 9. 爲什麼System.Type.IsPublic返回false?
- 10. 爲什麼!document.body返回False?
- 11. 爲什麼strtotime返回false?
- 12. ABGroupAddMember返回false。爲什麼?
- 13. 爲什麼QSortFilterProxyModel.setData()返回false?
- 14. 爲什麼getimagesize()返回false?
- 15. 爲什麼$ .contains()返回false?
- 16. 爲什麼transaction.wasCommitted()返回false?
- 17. 爲什麼os.path.isfile返回False?
- 18. 爲什麼List.contain返回false
- 19. 爲什麼IsUTF8String返回false?
- 20. 爲什麼is_array()返回false?
- 21. 爲什麼$ .isFunction返回false?
- 22. 爲什麼String.Equals返回false?
- 23. 1 = 1在T-SQL中返回False - 爲什麼?
- 24. 爲什麼(Integer)1 ==(Integer)1返回true,但(Integer)200 ==(Integer)200返回false?
- 25. 爲什麼IndexOf返回-1?
- 26. 爲什麼ISNUMERIC('。')返回1?
- 27. 爲什麼UINT_MAX返回-1?
- 28. 爲什麼sqlitedatabase.insert返回-1?
- 29. 爲什麼[] .push([])返回1?
- 30. 爲什麼retainCount返回-1
[count of false given 1 and if of a empty array gives false。爲什麼?](http://stackoverflow.com/questions/3776882/count-of-false-gives-1-and-if-of-an-empty-array-gives-false-why) – mario 2013-03-10 21:20:06