2011-12-28 24 views
-2

我有一个代码PHP如何删除foreach()中的“,”?

foreach ($cities as $city) { 
    echo substr($city->name . ", ", 0, -2); 
} 

结果是:A,B,C,d,E,

如何用的foreach除去 “”()

正确:a,b,c,d,e

+0

取值。其他逻辑也存在,但这对于这样的小任务将会是一个开销 – 2011-12-28 08:29:46

回答

0
$first = true; 
foreach ($cities as $city) { 
    if(!$first){ 
     echo ', '; 
    }else{ 
     $first = false; 
    } 
    echo $city->name; 
} 
0

更改它有点像:

$first = TRUE; 

foreach ($cities as $city) 
{ 
    if (!$first) 
    { 
     echo(","); 
    } 

    $first = FALSE; 
    echo($city->name); 
} 
1
$str = ''; 
foreach ($cities as $city){ 
    $str .= "$city, "; 
} 
$str = rtrim($str, " ,"); 
0

使用rtrimforeach()后:

$city->name = rtrim($city->name,','); 
8

你可以实现用更少的代码相同,通过使用implode功能。

$comma_separated = implode(',', $cities); 

应该给你正是你想要的。

0

方法1:

$index = 0; 
    foreach ($cities as $city) { 
    $index++; 
    echo $city->name . ($index == count($cities)?"":","); 

    } 

方法2:

$str = ""; 
    foreach ($cities as $city) { 
    $str .= $city->name . ",";  
    } 
$str = substr_replace($str ,"",-1); 
echo $str; 
+0

我认为如果数组还有其他值,我们就不能在这里使用implode。如果$ city-> postalCode也存在于数组中,该怎么办? – 2011-12-28 08:40:07

1

在这种情况下,你不能没有额外的标记去掉最后一个逗号。

您还有其他两个选项:

1.使用循环标准:

for ($i=0; $i < count($cities)-1; $i++) { 
    echo $cities[$i]->name . ", "; 
} 
echo $cities(count($cities)-1)->name; 

2.在foreach创建一个结果字符串,删除最后一个字符,比打印它。

1

只要做到: -

echo implode(',', $cites);

这会给你所需的输出。
我只是从你的代码注意到$cities是一个对象不是一个数组,抱歉: - 字符串和从字符串最后`,`最后删除

foreach($cities as $city){ 
    $cityNames[] = $city->name; 
} 
echo implode(',', $cityNames); 

http://www.php.net/implode