Удалить последнюю запятую из значения массива в цикле

0

Я храню некоторые данные в столбце "specialties" для MySQL db следующим образом:

,,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,

Как удалить последнюю запятую, когда я повторяю каждую специальность отдельно, а не массив в целом? Есть лучший способ сделать это?

Я попробовал решение из этого потока: Удаление последней запятой из цикла foreach, но я думаю, что способ хранения данных (, specialty1 ,, specialty2 ,, specialty3) вызывает проблему с этим решением.

  • 3
    $ string = rtrim ($ string, ',');
Теги:
arrays

2 ответа

1
Лучший ответ

Взрыв в одной запятой, используйте array_filter для удаления пустых записей и implode чтобы присоединиться к значениям:

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

Это должно сработать для вас:

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню