在Web开发中,我经常发现我需要格式化和打印各种数据数组,并以某种方式分离这些数据块。换句话说,我需要能够在每个循环之间插入代码,而不是在第一个条目之前或最后一个条目之后插入所述代码。我发现实现这一目标的最优雅方式如下:
function echoWithBreaks($array){
for($i=0; $i<count($array); $i++){
//Echo an item
if($i<count($array)-1){
//Echo "between code"
}
}
}
不幸的是,我无法用 foreach 而不是来实现来实现此解决方案。有没有人知道一个更优雅的解决方案,它将与 foreach 一起使用?
答案 0 :(得分:3)
我认为您正在寻找implode功能。
然后回复内爆的字符串。
我能想到制作精确算法的唯一更优雅的是:
function implodeEcho($array, $joinValue)
{
foreach($array as $i => $val)
{
if ($i != 0) echo $joinValue;
echo $val;
}
}
这当然假设$ array只用整数而不是键来索引。
答案 1 :(得分:1)
不幸的是,我认为foreach
无法做到这一点。这是许多语言的问题。
我通常会解决以下两种方式之一:
$i > 0
而不是$i < count($array) - 1
。join
或implode
。答案 2 :(得分:0)
我有时使用的技巧:
function echoWithBreaks($array){
$prefix = '';
foreach($array as $item){
echo $prefix;
//Echo item
$prefix = '<between code>';
}
}
答案 3 :(得分:0)
如果更复杂的代码然后内爆可以处理我使用一个简单的布尔值:
$looped = false;
foreach($arr as $var){
if($looped){
//do between
}
$looped = true;
//do something with $var
}