删除所有但最后一个逗号

时间:2012-12-16 10:53:54

标签: php list while-loop each substr

我有以下代码:

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

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



    echo"$implode_keys_values";
}

最终回显{​​{1}} 取决于有多少键/值。

如何使用此动态更改字符串并删除最后一个逗号?

请记住:

xxxx=xxxx,xxxx=xxxx,xxxx=xxxx,xxxx=xxxx,

无效,会删除所有逗号。

3 个答案:

答案 0 :(得分:3)

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, ",");

答案 1 :(得分:2)

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

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() ? ',' : '';
}

此变体适用于任何数据。

答案 2 :(得分:0)

在您的情况下,这是实施implode()的更好方式:

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