我将一些数据存储在"特色" 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,)导致问题这个解决方案。
答案 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, ',');