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

Php 在循环之间插入代码的优雅方法,php,Php,在web开发中,我经常发现我需要格式化和打印各种数据数组,并以某种方式分离这些数据块。换句话说,我需要能够在每个循环之间插入代码,而不必在第一个条目之前或最后一个条目之后插入所述代码。我发现实现这一目标最优雅的方式如下: function echoWithBreaks($array){ for($i=0; $i<count($array); $i++){ //Echo an item if($i<count($array)-1){

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

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

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

对于($i=0;$i我认为您正在寻找函数

然后只回显内爆的字符串


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

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

当然,这假设$array只由整数而不是键进行索引。

不幸的是,我认为使用
foreach
没有任何方法可以做到这一点。这在许多语言中都是一个问题

我通常采用以下两种方法之一解决此问题:

  • 您上面提到的方式,除了使用
    $i>0
    而不是
    $i
  • 使用
    连接

  • 我有时会使用一个技巧:

    function echoWithBreaks($array){
        $prefix = '';
        foreach($array as $item){
            echo $prefix;
            //Echo item
    
            $prefix = '<between code>';
        }
    }
    
    函数echoWithBreaks($array){
    $prefix='';
    foreach($数组作为$项){
    echo$前缀;
    //回音项
    $prefix='';
    }
    }
    
    如果代码更复杂,则内爆可以处理,我将使用一个简单的布尔值:

    $looped = false;
    foreach($arr as $var){
        if($looped){
           //do between
        }
        $looped = true;
        //do something with $var
    }
    

    如果我只需要在单个单词或行之间插入一些东西,这将非常有效。但是,我需要分离大块代码-并且围绕长度不确定的代码块内爆大块HTML听起来非常混乱。如果问题不清楚我正在处理HTML块,我深表歉意。我喜欢这样理论上回答,我在发帖前玩了一段时间,但在我看来,必须在循环外定义变量,这比使用简单的for循环更不干净。感谢您的输入。您的第一个解决方案非常有用。谢谢。不,没有!!这与Wrikken的回答类似,只是它不需要if.Whoops.sorry-误读。这是一个合法的解决方案-尽管我告诉Wrikken,foreach循环外的初始化变量让我有点畏缩。感谢您的回复。