【问题标题】:PHP - How to check for an empty array?PHP - 如何检查一个空数组?
【发布时间】:2016-06-02 20:17:00
【问题描述】:

好的,这很简单,但我不知道为什么我的不检查它!

我有一个if statement,它检查数组是否为空,如果为空,则应跳过它,但所有尝试都不跳过它。

代码如下:

$quizCounter = 0;
foreach ($quizzes as $key => $quiz) {

    if (!is_null($quiz['quiz_data'])) {

        echo "---->" . $key . "<BR>";

        unset($mark);
        $result = 0;
        $quizData = unserialize($quiz['quiz_data']);
        $quizTimestamp = date("d-m-Y", strtotime($quiz['time_stamp']));

        echo "Quiz: ";
        var_dump($quiz);
        echo "<BR>";

        echo "Quiz Data: ";
        var_dump($quizData);
        echo "<BR>";

        echo "Var Dump: ";
        var_dump($quizData['marks']);
        echo "<BR>";

        // Quiz marks
        if(!empty($quizData['marks'])) {
            foreach ($quizData['marks'] as $key => $marks) {
                $mark[$key] = $marks;
                echo "Mark: ";
                echo var_dump($marks) . "<BR>";
                $result += $marks;
            }
        }

        $markCounter = (count($mark) == 0) ? 1 : count($mark);
        $quizResult[$quizCounter] = $result / $markCounter;
        $quizCounter++;

    }

}

这是我需要跳过的结果:

---->34
Quiz: array(4) { ["quiz_data"]=> string(41) "a:2:{s:4:"ques";a:0:{}s:5:"marks";a:0:{}}" [0]=> string(41) "a:2:{s:4:"ques";a:0:{}s:5:"marks";a:0:{}}" ["time_stamp"]=> string(26) "0000-00-00 00:00:00.000000" [1]=> string(26) "0000-00-00 00:00:00.000000" } 
Quiz Data: array(2) { ["ques"]=> array(0) { } ["marks"]=> array(0) { } } 
Var Dump: array(0) { } 

如何跳过这个数组?

【问题讨论】:

  • if (count(array) > 0) ...
  • 也没用
  • 为什么要跳过?
  • 要跳过循环的当前迭代,您可以使用continue;(我猜您可能会在else 块中添加它?)。不确定这是否是您的问题...
  • 在这种情况下,只要您拥有$quizData,就可以使用if (empty($quizData['marks'])) { continue; }。你不敢尝试说它不起作用,这基本上是简单的东西:)

标签: php arrays if-statement foreach


【解决方案1】:

以下内容被认为是空的:

"" (an empty string)
0 (0 as an integer)
0.0 (0 as a float)
"0" (0 as a string)
NULL
FALSE
array() (an empty array)
$var; (a variable declared, but without a value)

这是来自以下页面的引用:

http://php.net/manual/en/function.empty.php

您的代码将$quizData['marks'] 视为空的原因是因为您在$quizData['marks'] 中有一个等于零的变量。如果您添加另一个不为零的值,您的代码应该可以工作。

或许可以考虑添加:

else if(isset($quizData['marks'])) {
    //proceed to print that person has a mark of zero
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-05
    • 2011-01-14
    • 2011-07-31
    • 2010-10-18
    • 2012-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多