【问题标题】:Remove last string value in foreach loop [duplicate]删除 foreach 循环中的最后一个字符串值 [重复]
【发布时间】:2018-02-17 07:42:10
【问题描述】:

我在 php 中有一个循环

foreach($Array as $key =>$value) 
 {
     $TotalLine .=  " Qualification =".$value." OR ";
 }
  echo $TotalLine;

打印

  Qualification =1 OR Qualification =2 OR Qualification =3 OR Qualification =4 OR

现在我需要删除该行中的最后一个 OR,所需的输出必须看起来像

 Qualification =1 OR Qualification =2 OR Qualification =3 OR Qualification =4 

如何做到这一点。任何帮助表示赞赏。

【问题讨论】:

标签: php arrays for-loop


【解决方案1】:

你可以使用数组和implode:

DEMO

$TotalLine = [];
foreach ($Array as $key => $value) {
    $TotalLine[] = " Qualification =" . $value;
}
echo implode(" OR ", $TotalLine);

或者,如果你不想要这个方法,你可以使用rtrim

DEMO

rtrim($TotalLine," OR"); 

在这里,不需要像" OR " 这样使用最后一个空格,因为trim 将每个字符都视为掩码。阅读文档


但前者是最可取和最整洁的。您使用数组,然后使用 implode 函数连接值。后者修剪掉最后一个指定的字符串。

注意:当您使用trim 时,掩码中的字符将被删除。在这里,当您的值只是数字时,就没有问题。但是当你有像ROAR 这样的字符串时,你最后一个R 也会被修剪掉。 Demo 也是如此。只是为了你的知识!或者,从这个问题演变而来的this article

【讨论】:

  • 但前一个是最可取和整洁的 - 谁来的?你?我绝对认为第二个更好,原因很简单,如果新手查看代码,则比 implode 更容易弄清楚名为 trim 的函数在做什么。
  • 我非常喜欢第一个选项。如果我是查看rtrim 版本的新手,我想知道您为什么要构建一个字符串然后才删除其中的一些。这是trying to fix the wrong problem 的问题之一——问题不应该是“如何删除字符串的最后一部分”,而应该是“如何使用通用分隔符构建字符串”。如果是这样的话,没人会谈论rtrim
  • 并且理解 rtrim() 的参数是一系列字符,而不是精确匹配的字符串很重要......在这种情况下,两个空格是没有意义的,如果最后一个字符的最后一个字符$value 包括 OR 会给出意想不到的结果
  • @MarkBaker 这就是我指定rtrim($TotalLine," OR"); 而不是rtrim($TotalLine," OR "); 的原因。我也更新了这个案例的通知:eval.in/857916
  • 哦,我的编辑和你的评论同时出现
【解决方案2】:

简单使用!empty()

PHP:

<?php
$Array =[1,2,3,4];
$TotalLine="";
foreach($Array as $key =>$value) 
{
    !empty($TotalLine) ? $TotalLine .=  " OR Qualification =".$value : $TotalLine =  "Qualification =".$value;

}
echo $TotalLine;
?>

输出:

Qualification =1 OR Qualification =2 OR Qualification =3 OR Qualification =4

【讨论】:

    【解决方案3】:

    没有 foreach 循环的替代方案。

    $array = [1,2,3,4];
    $string = implode(" OR Qualification =", $array);
    echo "Qualification =$string";
    

    【讨论】:

      【解决方案4】:

      尝试像这样使用end() 函数:

      foreach($Array as $key =>$value){    
        $TotalLine .=  " Qualification =".$value;
        if(!end($value)){
          $TotalLine .= " OR ";
        }    
       }
      

      【讨论】:

        【解决方案5】:

        您可以为此使用 php rtrim() 函数

        foreach($Array as $key =>$value) 
        {
            $TotalLine .=  " Qualification =".$value." OR ";
        }
        echo rtrim($TotalLine,"OR");
        

        【讨论】:

          猜你喜欢
          • 2018-11-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-08-01
          • 2018-11-22
          • 2013-02-17
          • 2017-08-19
          相关资源
          最近更新 更多