从循环中的数组值中删除最后一个逗号

时间:2014-11-18 00:38:27

标签: php arrays

我将一些数据存储在"特色" MySQL数据库的列如下:

,,specialty1,,,,specialty2,,,,specialty3,

首先,我将数据转换为数组:

$specialties = $location['specialties'];
$specialties_array = sw::shared()->users->unserializeArray($specialties);
foreach ($specialties_array as $specialty) {
    $specialty = str_replace(',', '', $specialty);
    echo $specialty . ", "; 
}

unSerializeArray函数:

public function unserializeArray($string) {

    $array = explode(",,",$string);
    unset($array[0]);
    $array = array_values($array);

    return $array;

}

我上面这个函数的问题是,在该函数运行之后,一些数组值仍然附加了一个逗号。

接下来我使用str_replace删除逗号以确保特殊值被分开。在分离特殊值后,然后为每个专业重新添加一个逗号以进行输出。

理想情况下,我想在最后一个专业之后显示没有逗号的专业:

specialty1, specialty2, specialty3

然而,它当然是这样输出的:

specialty1, specialty2, specialty3,

当我分别回显每个专业而不是整个数组时,如何删除最后一个逗号?有更好的方法吗?

我尝试了这个帖子的解决方案:Removing last comma from a foreach loop但我认为我存储数据的方式(,, special1 ,,,,special2 ,,,,speciality3,)导致问题这个解决方案。

2 个答案:

答案 0 :(得分:1)

点击一个逗号,使用array_filter删除空条目,implode重新加入值:

public function unserializeArray($string) {
    return array_values(array_filter(explode(',' $string)));
}
...
echo implode(',',$sw::shared()->users->unserializeArray($specialties));

答案 1 :(得分:0)

这应该适合你:

$str= rtrim($str, ',');