【发布时间】: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