这是检查数组是否包含多个元素的更好方法?

tux*_*ani 177 php arrays

我只需要检查一个数组是否有多个元素.我试着这样做:

if (isset($arr['1']))
Run Code Online (Sandbox Code Playgroud)

另一种传统方式是

if (sizeof($arr)>1)
Run Code Online (Sandbox Code Playgroud)

哪两个更好?在这种情况下,我应该如何判断两种替代方法?是否有任何性能检查仪可以测量哪个更好?

Chi*_*uzo 340

用这个

if (sizeof($arr) > 1) {
     ....
}
Run Code Online (Sandbox Code Playgroud)

要么

if (count($arr) > 1) {
     ....
}
Run Code Online (Sandbox Code Playgroud)

sizeof()是别名count(),他们的工作方式相同.

编辑: 回答问题的第二部分:问题中的两行代码不是替代方法,它们执行不同的功能.第一个检查是否$arr['1']设置了值,而第二个返回数组中的元素数.

  • @NB:问题被编辑了,初始代码是`if(sizeof($ arr))`,它转换为`if(sizeof($ arr)== 1)` - 显然没有检查数组是否有**不止一个**元素.这个答案是正确的,我认为没有理由进行投票,因此我的投票. (8认同)
  • 我承认我没有看过问题的原始版本,这个答案是回复.背景不同,我为将答案标记为错误而道歉.如果你看原始问题,那没关系.这对编辑过的问题不好. (2认同)

And*_*ong 44

if(is_array($arr) && count($arr) > 1)

只是为了确保$ arr确实是一个数组.

sizeof是别名count,我更喜欢使用count,因为:

  1. 输入的字符少1个
  2. sizeof快速浏览可能意味着内存方面的数组大小,太技术性:(

  • 从手册:*返回var中的元素数量.**如果var不是数组或具有已实现Countable接口的对象,则返回1.有一个例外,如果var为NULL,则返回0***. (12认同)

Ali*_*xel 6

if (count($arr) >= 2)
{
  // array has at least 2 elements
}
Run Code Online (Sandbox Code Playgroud)

sizeof()是别名count().两者都可以处理非数组,但如果参数是数组或Countable对象,它们只返回大于1的值,所以你对此非常安全.


Thi*_*ter 6

显然使用count($arr) > 1(sizeof只是别名count)是最好的解决方案.根据数组的结构,可能有大量元素但没有$array['1']元素.


Fah*_*hmi 6

使用 count()

if (count($my_array) > 1) {
// do
}
Run Code Online (Sandbox Code Playgroud)

这个页面解释得很好http://phparraylength.com/


Mit*_*ath 6

我喜欢的count()功能,而不是sizeOf()作为sizeOf()只是一个别名count(),并不意味着在许多其他语言一样.许多程序员希望sizeof()返回分配的内存量.