【问题标题】:PHP remove final separator within LoopPHP删除循环内的最终分隔符
【发布时间】:2015-02-18 05:16:24
【问题描述】:

在最后一部分,我只是想删除最后一个井号 (#) 分隔符。 我知道这是一个简单的 IF 语句,但我无法弄清楚。提前谢谢

<?php
    reset($values);
    while($value = current($values)) 
    {
        echo $value . " # ";
        next($values);
    }
    ?>

【问题讨论】:

  • 我会将$values 存储在一个数组中,然后将implode()# 作为粘合剂。
  • 对不起,我应该更具体。它们已经存储在一个数组中。我没有包含代码。它只是用磅运算符输出所有值,但删除最后一个磅符号。比如:44#234#254#365#734
  • 查看我的编辑。看看这是否有效。知道# 已经在其中会有所作为。现在我明白你为什么说if/else 可能是必需的了。
  • 你试过这个echo implode(" # ", $values)而不是循环

标签: php loops if-statement while-loop


【解决方案1】:

如前所述,我将存储在一个数组中,然后 implode() 存储的数组。

<?php
    reset($values);
    while($value = current($values)) {
            // Remove # here, just store values
            $array[] = $value;
            next($values);
        }
    // Check that values have been stored
    if(isset($array) && !empty($array))
        // Implode with the # character
        echo implode("#",$array);
    ?>

编辑:

由于# 已经存储在您的值中,您可以使用count()str_replace()

<?php
    // Dummy array maker
    for($a=1;$a<=10;$a++)
        $values[]   =   $a.'#';

    // Count how many are in array
    $count = count($values);
    reset($values);
    $i = 1;
    while($value = current($values)) {
            // If the count is equal to the $i, remove #
            echo ($i == $count)? str_replace("#","",$value) : $value;
            next($values);
            $i++;
        }
    ?>

给你:

1#2#3#4#5#6#7#8#9#10

【讨论】:

    【解决方案2】:
    for ($i=0;$i<=(count($values)-1);$i++) {
            $str = $values[$i];
            $total =count($values)-1;
               if((count($values)-1) == $i){
                echo $str =$str.'';
            }else{
                echo $str =$str.'#';
            }
        }
    

    【讨论】:

    • 虽然这个代码块可以回答这个问题,但如果你能提供一些解释为什么它会这样做,那将是一个更好的答案。
    猜你喜欢
    • 1970-01-01
    • 2017-01-11
    • 2013-01-17
    • 2013-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-15
    • 1970-01-01
    相关资源
    最近更新 更多