如何在while循环中删除逗号? [复制]

Posted

技术标签:

【中文标题】如何在while循环中删除逗号? [复制]【英文标题】:How to remove comma in while loop? [duplicate] 【发布时间】:2018-06-24 20:43:53 【问题描述】:

我正在使用如下的while循环:

<?php while(has_sub_field('available_locations')): ?>

    <a href="<?php the_sub_field('location_url'); ?>"><?php the_sub_field('locations'); ?></a>,

<?php endwhile; ?>

问题是 Last Location 也有逗号。例如:

加利福尼亚州、德克萨斯州

但我想看起来像这样:

加利福尼亚州,得克萨斯州

由于这包含 html 和 PHP 代码,我应该存储在一个变量中并使用 rtrim 删除最后一个逗号,还是有更好的解决方案。如果我把它放在变量中,我个人认为这不是一个好的解决方案。请务必回复。

更新:问题不仅仅是删除最后一个字符,而是包含一个锚标记,如果我将其存储在变量中,那么它不会创建超文本。喜欢

Google

但是存入变量后,结果是这样的:

https://www.google.co.in谷歌

【问题讨论】:

最终,您要么需要知道何时结束,要么将结果分配给数组,以便使用有限的值集。 我认为这不是一个重复的问题。问题不仅仅是删除最后一个字符,而是包含一个锚标记,如果我将其存储在变量中,它不会创建超文本。 显示“google.co.inGoogle”的HTML源代码。

提供 dans la ou les régions suivantes : ctfrandev.com/fr/promotions/?regions=491Québec<a href="">

您可以确定这个问题与 SO 重复。我在蟋蟀,所以我无法帮助搜索。以变​​量作为空字符串开始。回应它。第一次迭代后,将变量覆盖为逗号。如此简单的任务在 SO 上是重复的。 【参考方案1】:

使用PHP substr() 函数。

例子:

`substr("abcdef", 0, -1);  // returns "abcde"`

因此,在您的情况下,将所有输出 HTML 代码收集到变量 $links,然后使用 substr 截断最后一个字符并使用 echo 打印:

<?php 
$links = '';
while(has_sub_field('available_locations')) 
   $links .= '<a href="'. the_sub_field('location_url') .'">'.  the_sub_field('locations') .'</a>,';

echo substr($links, 0, -1);
?>

或者使用构建一个数组并使用implode()

<?php 
$links = [];
while (has_sub_field('available_locations'))  
   $links[] = '<a href="'. the_sub_field('location_url') .'">'.the_sub_field('locations').'</a>';

echo implode(', ', $links);
?>

编辑 显然,用于生成 URL 的函数将其输出直接发送到导致 HTML 链接断开的浏览器。 为避免这种情况,请使用 PHP Output Control Functions 捕获输出并启用数据/字符串操作。

<?php
ob_start(); // Turn on output buffering
while(has_sub_field('available_locations'))
  '<a href="'. the_sub_field('location_url') .'">'.  the_sub_field('locations') .'</a>,';

$links = ob_get_contents(); // Get the contents of the output buffer
ob_end_clean(); // Clean (erase) the output buffer and turn off output buffering

echo substr($links, 0, -1); // removal of the last character, the comma.
?>

【讨论】:

@Scuzzy 击败了我的编辑,哦,好吧 +1 @LawrenceCherone 感谢您的更新!很高兴看到不同的方法具有相同的结果。 如果你疯了,你甚至可以用 ob_start() ob_end_clean() 来做。 ;p @LawrenceCherone 不,伙计们,它不起作用。它基本上删除了逗号,但它直接显示了网址。锚标记不起作用。 @ino 查看我对这个问题的更新。【参考方案2】:

我认为您正在使用 ACF 插件,要修剪最后一个逗号,您可以将 rtrim() 函数与 ACF 的 get_sub_field() 一起使用或合并所有链接,如下所示。

<?php
    $links = array();
    while( has_sub_field( 'available_locations' ) )
    
      $links[] = '<a href="'.get_sub_field('location_url').'">'.get_sub_field('locations').'</a>';
    
    echo implode( ', ', $links );
?>

【讨论】:

【参考方案3】:

一种选择是将所有字符串收集到一个数组中,然后使用 implode 将它们连接起来。

<?php

$links = array();
while( has_sub_field( 'available_locations' ) )

  $links[] = '<a href="'.the_sub_field('location_url').'">'.the_sub_field('locations').'</a>';

echo implode( ', ', $links );

【讨论】:

会直接显示url。所以,它不工作。 啊,疯狂的 wordpress,好吧,那么这个答案就是垃圾,

以上是关于如何在while循环中删除逗号? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

6 循环

我将如何在 python 的 while 循环中打破一个函数? [复制]

循环并在末尾删除逗号

如何删除for循环中的最后一个逗号

while循环 和 运算符

逗号运算符do while循环嵌套循环数组简介