我正在尝试将一些信息从数据库传输到HTML以便为我的用户显示。我想在每次“行业”变化时打印新标签。我正在尝试使用一个名为$ last_industry的变量来跟踪我正在迭代的行业是否等于最后一行,但我没有取得好成绩。我在下面粘贴了我的代码。 $ c ['user_industries_title']是我需要监控的。
$last_industry = 'foo';
foreach($case_studies as &$c) {
//If the last industry we iterated over is different than the one we're currently iterating over, close the last section and print a new section.
if($last_industry != $c['user_industries_title']){
echo "</section>"
echo "<section>";
$changed = 1;
}else {$changed = 0}
$c = $last_industry;
$last_industry = $c['user_industries_title'];
}
此问题与$ last_industry变量有关。为了实现这一点,它需要将自己更新为最近的$ c ['user_industries_title'],以便在下一次迭代开始时使用,这是不会发生的。我错过了什么吗?
答案 0 :(得分:2)
当值发生变化时,您需要更改if()内的$ last_industry值,否则您始终使用相同的行业值运行:
$last_industry = null;
foreach ($case_studies as $c) {
if ($last_industry != $c['user_industries_title']) {
echo '</section><section>';
$last_industry = $c['user_industries_title'];
$changed = 1;
} else {
$changed = 0;
}
}
另外,请注意制作$ ca引用(&
运算符)时的缺陷 - 它仍然是脚本持续时间的参考,并且如果依赖它保持其值后可能会导致奇怪的副作用循环退出。
答案 1 :(得分:1)
看一下最后两行,你覆盖$c
,这是一个$last_industry
数组,这是你在上一次迭代中使用的字符串。
重命名最后一行的$c
或完全删除它。
BTW:如果你将PHP error_reporting设置设置为E_ALL,你会收到通知,$c
不再是一个数组了!