如何确定一个数组是否有任何元素?

33

如何判断数组是否有一个或多个元素?

我需要执行一段代码,其中数组的大小大于零。

if ($result > 0) {
    // Here is the code body which I want to execute
} 
else {
    // Here is some other code
}

8
如果(count($result) >0),则执行count()函数。 - bxN5
8个回答

40

你可以使用 count()sizeof() PHP 函数:

if (sizeof($result) > 0) {
    echo "array size is greater than zero";
}
else {
    echo "array size is zero";
}

或者您可以使用:

if (count($result) > 0) {
    echo "array size is greater than zero";
}
else {
    echo "array size is zero";
}

1
PHP 7在使用sizeof或count函数时会抛出警告。现在有更好的方法吗? - Christopher Smit
2
只有在向 count 传递无效类型时才会引发警告。请参阅此处的更改日志:http://php.net/manual/zh/function.count.php。 - Amade

14

count — 统计数组中的所有元素或对象中某个元素的个数

int count ( mixed $array_or_countable [, int $mode = COUNT_NORMAL ] )

计算数组中的所有元素,或对象中的某些内容。

例如:

<?php
    $a[0] = 1;
    $a[1] = 3;
    $a[2] = 5;
    $result = count($a);
    // $result == 3

根据您的情况,情况类似于:

if (count($array) > 0)
{
    // Execute some block of code here
}

如果我们在一次计数后再次在if条件中计数,是否可以再次计数? - Sajid Mehmood
你可以随意计数,但有时并不必要。尽量避免做不必要的事情,那只会玷污你的代码。 - Zeke

5
如果您只想检查数组是否为空,应使用empty()函数,它比count()函数更快,也更易读:
if (!empty($result)) {
    // ...
} else {
    // ...
}

3
您可以使用简单的foreach来避免长度检索和检查:
foreach($result as $key=>$value) {
    echo $value;
}

1

专业提示:

如果您确定以下内容:

  1. 变量已存在(isset)且
  2. 变量类型为数组(is_array)...这可能适用于所有可迭代对象,但我没有研究该问题范围的扩展。

那么您不需要调用任何函数。 一个或多个元素的数组具有布尔值true。没有元素的数组具有布尔值false

代码:(演示

var_export((bool)[]);
echo "\n";
var_export((bool)['not empty']);
echo "\n";
var_export((bool)[0]);
echo "\n";
var_export((bool)[null]);
echo "\n";
var_export((bool)[false]);
echo "\n";

$noElements = [];
if ($noElements) {
    echo 'not empty';
} else {
    echo 'empty';
}

输出:

false
true
true
true
true
empty    

1
在PHP中,我们使用count()函数来计算数组的长度,当count()返回0时,表示该数组为空。
让我们举个例子以便您更好地理解:
<?php
    $arr1 = array(1); // With one value which will give 1 count
    $arr2 = array();  // With no value which will give 0 count

    // Now I want that the array which has greater than 0 count should print other wise not so

    if (count($arr1)) {
        print_r($arr1);
    }
    else {
        echo "Sorry, array1 has 0 count";
    }

    if (count($arr2)) {
        print_r($arr2);
    }
    else {
        echo "Sorry, array2 has 0 count";
    }

0
对于那些刚开始接触 PHP 数组的人,可以按照以下方式呈现: 更多信息在此处
//Array
$result = array(1,2,3,4);

//Count all the elements of an array or something of an object
if (count($result) > 0) {
    print_r($result);
} 

// Or 
// Determines if a variable is empty
if (!empty($result)) {
    print_r($result);
}

// Or 
// sizeof - Alias of count ()
if (sizeof($result)) {
    print_r($result);
} 

-1
<pre>
$ii = 1;
$arry_count = count($args);
foreach ( $args as $post)
{
    if( $ii == $arry_count )
    {
        $last = 'blog_last_item';
    }
    echo $last;
    $ii++; 
}
</pre>

你能为你的代码添加一些解释吗?$last是做什么用的? - Nico Haase
欢迎来到Stack Overflow!感谢您提供的代码片段,它可能会提供一些有限的、即时的帮助。一个适当的解释将极大地提高其长期价值,描述为什么这是一个好的解决方案,并使其对未来有类似问题的读者更有用。请编辑您的答案添加一些解释,包括您所做的假设。 - sepehr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接