PHP爆炸功能找到最后一个孩子

时间:2016-07-07 07:52:43

标签: php html plugins

我有一个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()功能吗?

请帮帮我!

5 个答案:

答案 0 :(得分:2)

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

http://localhost:8080/mywebapp/test

或者,您可以这样使用:

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

答案 1 :(得分:1)

计算数组。并使用$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++;
}

答案 2 :(得分:1)

您可以获取行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 :(得分:1)

$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 :(得分:1)

您可以使用速记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++;
}