很抱歉,如果这令人困惑。我很难掌握初学PHP知识。
我正在使用以下foreach循环:
foreach ($_POST['technologies'] as $technologies){
echo ", " . $technologies;
}
产生:
,First,Second,Third
我想要的是什么:
第一,第二,第三
我需要的是循环跳过第一个键的echo ", "
。我怎么能做到这一点?
答案 0 :(得分:21)
您可以使用=>
提取每个数组项的索引,而不是为第一项打印逗号:
foreach ($_POST['technologies'] as $i => $technologies) {
if ($i > 0) {
echo ", ";
}
echo $technologies;
}
或者,更简单的是,你可以使用implode($glue, $pieces),它“以相同的顺序返回包含所有数组元素的字符串表示的字符串,并在每个元素之间使用粘合字符串”:
echo implode(", ", $_POST['technologies']);
答案 1 :(得分:4)
对于在foreach循环的每次迭代中执行某些操作的一般情况:
$first = true;
foreach ($_POST['technologies'] as $technologies){
if(!$first) {
echo ", ";
} else {
$first = false;
}
echo $technologies;
}
但是implode()是处理你这个特定问题的最佳方法:
echo implode(", ", $_POST['technologies']);
答案 2 :(得分:1)
你需要某种旗帜:
$i = 1;
foreach ($_POST['technologies'] as $technologies){
if($i > 1){
echo ", " . $technologies;
} else {
echo $technologies;
}
$i++;
}
答案 3 :(得分:1)
添加一个使用数组的第一个键处理所有类型数组的答案:
# 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;
}
答案 4 :(得分:0)
为什么不简单地使用PHP内置函数implode()
来更轻松地以更少的代码来完成此任务?
赞:
<?php
$a = ["first","second","third"];
echo implode($a, ", ");
根据您的情况,只需执行以下操作:
echo implode($_POST['technologies'], ", ");