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

Php Foreach循环,但对于第一个键,请执行其他操作,php,foreach,Php,Foreach,抱歉,这让人困惑。对我来说,掌握PHP的初学者知识很难用语言来表达 我正在使用以下foreach循环: foreach ($_POST['technologies'] as $technologies){ echo ", " . $technologies; } $first = true; foreach ($_POST['technologies'] as $technologies){ if(!$first) { echo ", "; } else {

抱歉,这让人困惑。对我来说,掌握PHP的初学者知识很难用语言来表达

我正在使用以下foreach循环:

foreach ($_POST['technologies'] as $technologies){
    echo ", " . $technologies;
}
$first = true;
foreach ($_POST['technologies'] as $technologies){
    if(!$first) {
      echo ", ";
    } else {
      $first = false;
    }
    echo $technologies;
}
产生:

,第一,第二,第三

我想要的是:

一、二、三


我只需要让循环跳过
echo“,”
的第一个键。如何实现这一点?

您可以使用
=>
提取每个数组项的索引,而不为第一项打印逗号:

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

    echo $technologies;
}
或者,更简单的是,您可以使用,它“返回一个字符串,该字符串包含所有数组元素的相同顺序的字符串表示形式,每个元素之间有一个粘合字符串”:


对于在foreach循环的每一次迭代(第一次迭代除外)中执行某些操作的一般情况:

foreach ($_POST['technologies'] as $technologies){
    echo ", " . $technologies;
}
$first = true;
foreach ($_POST['technologies'] as $technologies){
    if(!$first) {
      echo ", ";
    } else {
      $first = false;
    }
    echo $technologies;
}
但这是解决您的这个具体问题的最佳方法:

echo implode(", ", $_POST['technologies']);

你需要某种旗帜:

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

添加使用数组的第一个键处理所有类型数组的答案:

# get the first key in array using the current iteration of array_keys (a.k.a first)
$firstKey = current(array_keys($array)); 

foreach ($array as $key => $value)
{
    # if current $key !== $firstKey, prepend the ,
    echo ($key !== $firstKey ? ', ' : ''). $value;
}

为什么不简单地使用PHP内置函数
内爆()
以更少的代码轻松完成这项工作

像这样:

<?php
$a = ["first","second","third"];
echo implode($a, ", ");

$\u POST['technologies']可能没有数字键请注意,您没有在中验证输入。这可能导致注入漏洞。