【问题标题】:Remove Last Comma From Array Value in Loop从循环中的数组值中删除最后一个逗号
【发布时间】:2014-11-18 00:38:27
【问题描述】:

我将一些数据存储在 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,但我认为我存储数据的方式 (,,specialty1,,,,specialty2,,,,specialty3,) 导致此解决方案出现问题。

【问题讨论】:

  • $string = rtrim($string, ',');

标签: php arrays


【解决方案1】:

以单个逗号展开,使用array_filter 删除空条目,并使用implode 重新加入值:

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

【讨论】:

    【解决方案2】:

    这应该适合你:

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

    【讨论】:

      猜你喜欢
      • 2013-11-24
      • 1970-01-01
      • 2017-09-29
      • 2015-08-05
      • 1970-01-01
      • 2020-01-24
      • 2018-02-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多