2011-09-30 153 views
0

我已经阅读了很多方法,在执行基本查询时删除字符串末尾的逗号,但没有一个基本的东西似乎与这个特定的脚本一起工作。希望我只是在想这个。我的脚本通过数据库并将城市置于适当的状态,但我需要删除最后一个城市的逗号。从字符串结尾删除逗号高级

这里是我使用

<?php 
$sql = "SELECT * FROM markets WHERE id = 0 ORDER BY market_state"; 
$res = mysql_query($sql); 
$list = array(); 
while ($r = mysql_fetch_object($res)) { 
$list[$r->market_state][$r->id]['market_cities'] = $r->market_cities; 

} 

foreach ($list as $market_state => $market_cities) { 
echo '<h1>' . $market_state . '</h1>'; 

foreach ($market_cities as $cityId => $cityInfo) { 
echo $cityInfo['market_cities']. ','; 

// etc 
} 

} 
?> 

回答

0

您也可以让MySQL的做的工作,如果你不需要这个 “cityId”:

<?php 
$sql = "SELECT market_state,GROUP_CONCAT(market_cities) as market_cities FROM markets WHERE id = 0 GROUP BY market_state ORDER BY market_state"; 
$res = mysql_query($sql); 
$list = array(); 
while ($r = mysql_fetch_object($res)) { 
    $list[$r->market_state] = $r->market_cities; 
} 

foreach ($list as $market_state => $market_cities) { 
    echo '<h1>' . $market_state . '</h1>'; 
    echo $market_cities; 
} 
-1
echo $cityInfo['market_cities']; 
if(count($market_cities)<$i) { 
    echo ","; 
} 

做的最简单的方法脚本。

+0

计数循环中的相同内容是多余的,您应该将其分配给循环外的变量。 –

+1

您可能想要抛出初始化和递增代码,使其更清晰。 – webbiedave

6

另一种在这种情况下效果非常好的方法是制作一个字符串并简单修剪掉最后一个逗号。

foreach ($market_cities as $cityId => $cityInfo) { 
    $citystr .= $cityInfo['market_cities']. ','; 
} 
echo rtrim($citystr, ','); 
1

我觉得最彻底的方法是做到这一点...

$data = array_map(function($item) { return $item['market_cities']; }, $market_cities); 
$output = implode(',', $data); 
1

你也可以使用join函数输出一个逗号分隔的列表从一个数组。因此,而不是:

foreach ($market_cities as $cityId => $cityInfo) { 
    echo $cityInfo['market_cities']. ','; 
    ... 
    ... 
} 

它看起来是这样的:

$cities = join(",", $market_cities); 
echo $cities; 
+0

+1不是愚蠢的唯一答案。 – ocodo