在循环之间插入代码的优雅方法

时间:2010-06-16 23:52:09

标签: php

在Web开发中,我经常发现我需要格式化和打印各种数据数组,并以某种方式分离这些数据块。换句话说,我需要能够在每个循环之间插入代码,而不是在第一个条目之前或最后一个条目之后插入所述代码。我发现实现这一目标的最优雅方式如下:

function echoWithBreaks($array){
    for($i=0; $i<count($array); $i++){
        //Echo an item

        if($i<count($array)-1){
            //Echo "between code"
        }
    }
}

不幸的是,我无法用 foreach 而不是来实现来实现此解决方案。有没有人知道一个更优雅的解决方案,它将与 foreach 一起使用?

4 个答案:

答案 0 :(得分:3)

我认为您正在寻找implode功能。

然后回复内爆的字符串。


我能想到制作精确算法的唯一更优雅的是:

function implodeEcho($array, $joinValue)
{
   foreach($array as $i => $val)
   {
      if ($i != 0) echo $joinValue;
      echo $val;
   }
}

这当然假设$ array只用整数而不是键来索引。

答案 1 :(得分:1)

不幸的是,我认为foreach无法做到这一点。这是许多语言的问题。

我通常会解决以下两种方式之一:

  1. 上面提到的方式,除了$i > 0而不是$i < count($array) - 1
  2. 使用joinimplode

答案 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
}