Php 在foreach()末尾更改其值的变量

Php 在foreach()末尾更改其值的变量,php,Php,我试图将数据库中的一些信息转换成HTML,以显示给我的用户。我想在每次“行业”改变时打印新标签。我试图使用一个名为$last_industry的变量来跟踪我当前迭代的行业是否等于上一个行业,但是我没有得到好的结果。我已将代码粘贴到下面$c['user\u industries\u title']是我需要监控的内容 $last_industry = 'foo'; foreach($case_studies as &$c) { //If the last industry we ite

我试图将数据库中的一些信息转换成HTML,以显示给我的用户。我想在每次“行业”改变时打印新标签。我试图使用一个名为$last_industry的变量来跟踪我当前迭代的行业是否等于上一个行业,但是我没有得到好的结果。我已将代码粘贴到下面$c['user\u industries\u 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='foo';
foreach($c)案例研究{
//如果我们迭代的最后一个行业与我们当前迭代的行业不同,请关闭最后一个部分并打印一个新部分。
如果($last_industry!=$c['user_industries_title')){
回声“”
回声“;
$changed=1;
}else{$changed=0}
$c=$last_行业;
$last_industry=$c['user_industries_title'];
}

此问题与$last_行业变量有关。要使其正常工作,它需要将自身更新为最新的$c['user\u industries\u title'],以便在下一次迭代开始时使用,但这不会发生。我遗漏了什么吗?

当值发生更改时,您需要更改if()中的$last\u行业值,否则您总是使用相同的行业值运行:

$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;
   }
}
$last\u industry=null;
foreach(案例研究为$c){
如果($last_industry!=$c['user_industries_title')){
回声';
$last_industry=$c['user_industries_title'];
$changed=1;
}否则{
$changed=0;
}
}

另外,要注意将$c作为引用(
&
操作符)的陷阱-在脚本期间,它仍然是一个引用,如果您依赖它在循环退出后保持其值,则可能会产生奇怪的副作用。

当值发生更改时,您需要在if()中更改$last_行业值,否则,您总是以相同的行业价值运行:

$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;
   }
}
$last\u industry=null;
foreach(案例研究为$c){
如果($last_industry!=$c['user_industries_title')){
回声';
$last_industry=$c['user_industries_title'];
$changed=1;
}否则{
$changed=0;
}
}

另外,要注意将$c作为引用(
&
操作符)的陷阱-在脚本期间,它仍然是一个引用,如果您依赖它在循环退出后保持其值,则可能会产生奇怪的副作用。

看一下最后两行,您可以覆盖
$c
,它是一个数组,其中包含上次迭代中使用的字符串
$last\u industry
。 重命名最后第二行中的
$c
,或将其完全删除


顺便说一句:如果您将PHP错误报告设置设置为E_,您将收到所有通知,
$c
不再是数组

看看最后两行,您覆盖了
$c
,这是一个数组,其中包含上次迭代中使用的字符串
$last\u industry
。 重命名最后第二行中的
$c
,或将其完全删除


顺便说一句:如果您将PHP错误报告设置设置为E_,您将收到所有通知,
$c
不再是数组

您正在覆盖倒数第二行中的
$c
。您正在覆盖倒数第二行中的
$c
。谢谢您提供的信息。这也是相关的。谢谢你的信息。这也是相关的。