1

我有以下代码:

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

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

4

3 回答 3

3

rtrim($implode_keys_values, ",")会削减尾随逗号。

您可以在 PHP 文档中了解有关rtrim 的更多信息

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

    $implode_keys_values .= @"$key=$value,";
}
echo rtrim($implode_keys_values, ",");
于 2012-12-16T10:55:18.863 回答
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() ? ',' : '';
}

此变体适用于任何数据。

于 2012-12-16T11:10:20.363 回答
0

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

$data = array();
while (list($key, $value) = each($arr)) {
   $data[] = "$key=$value";
}
echo implode(",",$data);
于 2012-12-16T11:05:05.103 回答