【问题标题】:PHP explode function find last childPHP爆炸函数找到最后一个孩子
【发布时间】:2016-07-07 07:52:42
【问题描述】:

我有一个 php 插件,可以将一行分解为几行。

$graph_lines = explode( ";", $content );
$output= '';
$output .= '<ul class="lpd-bullet-list';
if($image){
    $output .= ' lpd-bl-custom-icon';    
}
if($style){
    $output .= ' '.esc_attr($style);    
}
$output .= '">';

foreach ($graph_lines as $line) {
    if($line){

        $output .= '<li>';
        $output .= $image;
        $output .= $line;
        $output .= ';';
        $output .= '</li>';

    }
}

$output .= '</ul>';
echo $output;

在最后的每一行之后设置; 没关系,但是如何为最后一个元素设置.?有可能吗?

我需要使用end() 函数还是其他函数?

请帮帮我!

【问题讨论】:

  • 你能发布预期的输出吗?

标签: php html plugins


【解决方案1】:

我不太确定你的输出,但是你可以像这样使用 end 函数:

$last_index = end(array_keys($graph_lines));
foreach ($graph_lines as $index => $line) {
    if ($index == $last_index) {
        // last index
    } else {
        // perform other tasks
    }
}

或者,您可以这样使用:

foreach ($graph_lines as $line) {
    if($line){

        $output .= '<li>';
        $output .= $image;
        $output .= $line;
        $output .= ';';
        if (next($graph_lines)==false) $output .= '.';//not sure where you put it.
        $output .= '</li>';

    }
}

【讨论】:

    【解决方案2】:

    您可以获取行号sizeof($graph_lines) 并在您的 foreach 中创建一个计数器。

    示例:

       $numberofline = sizeof($graph_lines);
        $i=0;
        foreach ($graph_lines as $line) {
            if($line){
                $i++;
                $endofline=";";
                if($i==$numberofline)
                {
                    $endofline=".";
                }
                $output .= '<li>';
                $output .= $image;
                $output .= $line;
                $output .= $endofline;
                $output .= '</li>';
    
            }
        }
    

    【讨论】:

      【解决方案3】:
      $content = "a;b;c;d;s;r;t;g";
      $content = rtrim($content, ";");
      $content = ltrim($content, ";");
      $graph_lines = explode(";", $content);
      $output = '';
      $output .= '<ul class="lpd-bullet-list">';
      
      $last = count($graph_lines) - 1;
      $i = 0;
      foreach ($graph_lines as $line) {
          if ($line) {
              $output .= '<li>';
              $output .= $line;
              $output .= ($last == $i)? '.' : ";";
              $output .= '</li>';
              $i++;
          }
      }
      
      $output .= '</ul>';
      echo $output;
      

      【讨论】:

        【解决方案4】:

        您可以使用简写 IF 来检查当前行是否与数组中的最后一个元素匹配。

        foreach ($graph_lines as $line) {
            if($line){
        
                $output .= '<li>';
                $output .= $image;
                $output .= $line;
                $output .= ( $line === end ( $graph_lines ) ) ? '.' : ';';
                $output .= '</li>';
        
            }
        }
        

        另一种方法是设置一个计数器并检查该计数器是否等于 $graph_lines 的 count()。

        $counter = 1;
        $total_items = count ( $graph_lines );
        
        foreach ( $graph_lines as $line ) {
            // do your stuff.
            $output .= ( $counter === $total_items ) ? '.' : ';';
            $counter++;
        }
        

        【讨论】:

          【解决方案5】:

          计算数组。并通过$i 进行检查。

          $count = count($graph_lines);
          $i = 0;
          foreach ($graph_lines as $line) {
              if ($line) {
                  if ($i == $count) {
                      $output .= '<li>';
                      $output .= $image;
                      $output .= $line;
                      $output .= '.';
                      $output .= '</li>';
                  } else {
                      $output .= '<li>';
                      $output .= $image;
                      $output .= $line;
                      $output .= ';';
                      $output .= '</li>';
                  }
              }
            $i++;
          }
          

          【讨论】:

          • //输出 - 这是什么?
          • //output 是您最后要输出的内容。告诉我们你想要什么输出
          • 现在检查。我忘了加$i++
          • 不...我明白了;在每个之后
          猜你喜欢
          • 2013-12-15
          • 1970-01-01
          • 2015-08-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-02-12
          相关资源
          最近更新 更多