См. мой ответ здесь, как это сделать с помощью одной инструкции x86, за исключением того, что для поиска наименее значимого бита набора вам понадобится команда BSF («бит сканирования вперед») вместо BSR, описанная там ,
взглянуть на функцию rtrim
rtrim ($ string, ",");
указанная выше строка удалит символ, если последний символ является запятой
Это классический вопрос с двумя решениями. Если вы хотите удалить ровно одну запятую, которая может быть или не быть, используйте:
if (substr ($ string, -1, 1) == ',') {$ string = substr ($ string, 0, -1); }
Если вы хотите удалить все запятые из конца строки, используйте более простой:
$ string = rtrim ($ string, ',' );
Функция rtrim (и соответствующая ltrim для левой обрезки) очень полезна, так как вы можете указать диапазон символов для удаления, то есть удалить запятые и конечные пробелы, которые вы бы пишете:
$ string = rtrim ($ string, ", \ t \n");
Если вы конкатенируете что-то в цикле, вы также можете сделать это следующим образом:
$ coma = ""; foreach ($ a as $ b) {$ string. = $ coma. $ b; $ coma = ","; }
Предположим, что с помощью:
if (substr ($ string, -1) == ",")
if (substr ($ str, -1, 1) == ',') {$ str = substr ($ str, 0, -1); }
Я предполагаю, что вы конкатенируете что-то в цикле, например
foreach ($ a as $ b) $ string. = $ b. '';
гораздо лучше собирать элементы в массиве, а затем присоединяться к нему с помощью разделителя, который вам нужен
foreach ($ a as $ b) $ result [ ] = $ b; $ result = implode (',', $ result);
это решает проблемы с конечным и двойным разделителем, которые обычно возникают при конкатенации
В конце моей строки у меня было надоедливое «невидимое» пространство, и мне пришлось это делать
$ update_sql = rtrim (trim ($ update_sql), ',');
Но решение выше лучше
$ update_sql = rtrim ($ update_sql, ',');