你知道为什么<?= 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