【问题标题】:remove all but last comma删除除最后一个逗号之外的所有逗号
【发布时间】:2012-12-03 17:56:26
【问题描述】:

我有以下代码:

while (list($key, $value) = each($arr)) {

    $implode_keys_values = @"$key=$value,";



    echo"$implode_keys_values";
}

最终回显xxxx=xxxx,xxxx=xxxx,xxxx=xxxx,xxxx=xxxx, 取决于有多少键/值。

如何获取这个动态变化的字符串并删除最后一个逗号?

记住:

$implode_keys_values = substr($implode_keys_values,0,-1);

不行,它会去掉所有的逗号。

【问题讨论】:

标签: php list while-loop each substr


【解决方案1】:

rtrim($implode_keys_values, ",") 将删除尾随逗号。

您可以了解更多关于rtrim here at the PHP docs

$implode_keys_values = "";
while (list($key, $value) = each($arr)) {

    $implode_keys_values .= @"$key=$value,";
}
echo rtrim($implode_keys_values, ",");

【讨论】:

  • 我只需要删除最后一个,。我仍然希望其他的完好无损。
  • while (list($key, $value) = each($arr)) { $implode_keys_values = @"$key=$value,"; $implode_keys_values = rtrim($implode_keys_values, ","); echo"$implode_keys_values"; echos key=valuekey=valuekey=value 应该是:key=value,key=value,key=value
  • 将 rtrim 放在循环之外 - 在最后
【解决方案2】:

如果数组中的数据不太复杂(适用于您拥有的 xxxxxx 值,可以与其他值中断),PHP 有一个内置函数:

echo http_build_query($arr, '', ',');

http_build_query()

另一种选择是使用迭代器并检查当前迭代是否是最后一个迭代。 CachingIterator::hasNext() 方法对此很有帮助:

$it = new CachingIterator(new ArrayIterator($arr));
foreach($it as $key => $value) {
    echo $key, '=', $value, $it->hasNext() ? ',' : '';
}

此变体适用于任何数据。

【讨论】:

    【解决方案3】:

    在您的情况下,这将是实现implode() 的更好方法:

    $data = array();
    while (list($key, $value) = each($arr)) {
       $data[] = "$key=$value";
    }
    echo implode(",",$data);
    

    【讨论】:

    • 您首先将您的答案更新为使用[],并且您指出我在$value 之后有一个,,这让问题滚动了。非常感谢您,您的救命稻草!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多