php array()w/foreach仅在使用.=生成结果时循环

php array()w/foreach仅在使用.=生成结果时循环,php,arrays,loops,foreach,Php,Arrays,Loops,Foreach,我有一个非常令人沮丧的问题,我无法解决。这就是不合算 我在foreach()上传递一个数组以进行处理,如下所示: if (is_array($seminar)) { foreach ($seminar as $sem_id) $sem_id_list .= "$sem_id"; echo "$sem_id<br />"; } 正如您在我的代码中所看到的,我正在构建一个块w/=。如:$sem\u id\u list.=“$sem\u id”;*当回响出来的时候看起来像

我有一个非常令人沮丧的问题,我无法解决。这就是不合算

我在foreach()上传递一个数组以进行处理,如下所示:

if (is_array($seminar)) {
foreach ($seminar as $sem_id)
    $sem_id_list .= "$sem_id";
    echo "$sem_id<br />";
}
正如您在我的代码中所看到的,我正在构建一个块w/=。如:$sem\u id\u list.=“$sem\u id”;*当回响出来的时候看起来像是:389131415

但当我只是尝试遍历并打印每个值时,如:*echo“$sem_id
”;*我只得到最后一个数组()项

我以前从未遇到过这个问题。我猜我在这里遗漏了一些非常简单的东西,但根据我的经验,这应该是可行的,并且可以打印这些结果

作为旁注,var_dump($研讨会);这也产生了:

array(6) { [0]=> string(1) "3" [1]=> string(1) "8" [2]=> string(1) "9" [3]=> string(2) "13" [4]=> string(2) "14" [5]=> string(2) "15" }

缺少
foreach
的左大括号和右大括号。尝试:

if (is_array($seminar)) {
  foreach ($seminar as $sem_id) {
    $sem_id_list .= "$sem_id";
    echo "$sem_id<br />";
  }
}

循环检查缺少{}

  if (is_array($seminar)) {
foreach ($seminar as $sem_id){
    $sem_id_list .= "$sem_id";
    echo "$sem_id<br />";
}
}

和行
echo“$sem_id
仅在循环完成后执行一次

如果OP正确地缩进了他的代码,这将是非常明显的。是的,就是这样。真不敢相信我错过了!我想一双新的眼睛可以看到更多的东西。请注意,OP的代码在技术上仍然有效,这不是他想要做的。新行+缩进是一种避免使用括号或冒号的方法,但只有下一行将在块中执行,这就是为什么第二行只打印最后一项,因为
$sem_id
成为一个全局变量,仅由最后一次迭代定义。另一个答案试图解释这一点。缩进,以及在块体之前写大括号/大括号的习惯,可以帮助您在将来避免这种情况。是的,我当然会接受这个答案。我只需等待十分钟,就可以通过StackOverflow的模块进行操作。我会支持韦斯利·默奇。。我以前写过这样的foreach()循环,这是非常令人困惑的,但我从括号中看到它重新定义了它的工作方式。
if (is_array($seminar)) {
  foreach ($seminar as $sem_id) {
    $sem_id_list .= "$sem_id";
  }
  echo "$sem_id_list";
}
  if (is_array($seminar)) {
foreach ($seminar as $sem_id){
    $sem_id_list .= "$sem_id";
    echo "$sem_id<br />";
}
}
   $sem_id_list .= "$sem_id";