Foreach循环,但是对于第一个键执行其他操作

Ben*_*nny 3 php foreach

对不起,如果这令人困惑.我很难掌握初学PHP知识.

我正在使用以下foreach循环:

foreach ($_POST['technologies'] as $technologies){
    echo ", " . $technologies;
}
Run Code Online (Sandbox Code Playgroud)

哪个产生:

, 第一第二第三

我想要的是:

第一第二第三

我只需要循环跳过echo ", "第一个键.我怎么能做到这一点?

Joh*_*ica 21

您可以使用=>而不是为第一个项目打印逗号来拉出每个数组项的索引:

foreach ($_POST['technologies'] as $i => $technologies) {
    if ($i > 0) {
        echo ", ";
    }

    echo $technologies;
}
Run Code Online (Sandbox Code Playgroud)

或者,更简单的是,你可以使用implode($ glue,$ pieces),它"以相同的顺序返回包含所有数组元素的字符串表示的字符串,并在每个元素之间使用粘合字符串":

echo implode(", ", $_POST['technologies']);
Run Code Online (Sandbox Code Playgroud)


Kam*_*zot 5

对于在 foreach 循环的每一次但第一次迭代中做某事的一般情况:

$first = true;
foreach ($_POST['technologies'] as $technologies){
    if(!$first) {
      echo ", ";
    } else {
      $first = false;
    }
    echo $technologies;
}
Run Code Online (Sandbox Code Playgroud)

但是implode()是处理您这个特定问题的最佳方法:

echo implode(", ", $_POST['technologies']);
Run Code Online (Sandbox Code Playgroud)