php array()w/foreach只在循环时使用.=来构建结果

Old*_*est 0 php arrays foreach loops

我有一个非常令人沮丧的问题,我不能导致.它只是没有加起来.

我传递一个数组来处理foreach(),如下所示:

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

正如你所看到的,我的array()是$ seminar,输出如下:

Array
(
    [0] => 3
    [1] => 8
    [2] => 9
    [3] => 13
    [4] => 14
    [5] => 15
)
Run Code Online (Sandbox Code Playgroud)

正如你在我的代码中看到的那样,我正在构建一个w/=的块.喜欢:*$ sem_id_list.="$ sem_id";*和回显的时候看起来像:389131415正如预期的那样.

但是,当我只是尝试迭代并打印每个值,如:*echo"$ sem_id
";*我只获得最后一个array()项!

我以前从未遇到过这个问题.我猜我在这里遗漏了一些简单的东西,但从我的经验来看,这应该是正常的,打印这些结果就好了.

作为旁注,var_dump($ seminar); 也产生这个:

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" }
Run Code Online (Sandbox Code Playgroud)

she*_*mer 5

你错过了支撑的开口foreach支撑.尝试:

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

或者构建列表并在最后打印它:

if (is_array($seminar)) {
  foreach ($seminar as $sem_id) {
    $sem_id_list .= "$sem_id";
  }
  echo "$sem_id_list";
}
Run Code Online (Sandbox Code Playgroud)

  • 如果OP正确地缩进了他的代码,这将是非常明显的. (3认同)
  • 请注意,OP的代码在技术上仍然有效,这不是他想要做的.新行+缩进是一种避免括号或冒号的方法,但只有下一行将在块中执行,这就是为什么第二行只打印最后一项,因为`$ sem_id`变成一个全局变量,仅由最后一次迭代.另一个答案是试图解释这一点. (2认同)