Строка (тип string) PHP — это набор символов, где символ — это то же самое, что и байт. Это значит, что PHP поддерживает ровно 256 различных символов, а также то, что в PHP нет встроенной поддержки Unicode.
Как и многие другие вещи в PHP, манипуляции со строками могут осуществляться различными способами.
Я часто сталкиваюсь с созданием строки элементов из массива для представления на экране или ввода в базу данных. Я решил, что сейчас самое время изучить лучший метод удаления этой надоедливой запятой, которая обычно оказывается в конце зацикленной строки (так уж получилось, неправильный способ).
В этой статье я покажу вам четыре различных способа удаления последнего символа строки, а затем лучший способ сделать это, который не предполагает удаления какого-либо символа, но все же, скорее всего, это причина, по которой вы здесь находитесь.
Чаще всего разработчики хотят перебрать элементы, чтобы создать список, разделенный запятыми, в виде строки.
Быстрый и грязный метод заключается в том, чтобы просто перебрать элементы и добавить запятую в конец каждого из них. После цикла вам нужно будет удалить последнюю запятую из конца строки.
Если вы получаете запятую таким образом, вам следует воспользоваться методом implode
в PHP, а не перебирать и объединять запятые на каждом шаге.
Вот чистый способ создания списка, разделенного запятыми — никаких манипуляций со строками не требуется.
$foods = array("banana","orange","apple");
$stringarray = array();
foreach($foods as $fruit)
{
array_push($stringarray,$fruit); // step #1 - add values to an array
}
$string = implode("','",$stringarray); // step #2 - implode array
echo "SELECT * FROM menu WHERE fruits IN ('$string')";
Вывод из приведенного выше примера будет следующим:
SELECT * FROM menu WHERE fruits IN ('banana','orange','apple')
rtrim
— это функция PHP, которую также можно использовать для отсечения последнего символа. Для ситуации с запятой в конце строки можно использовать:
rtrim($string, ",")
Если вы попали в настоящую передрягу и в конце вашей строки оказались запятые, вы можете использовать trim
вместо rtrim
. trim($string, ",")
уберет запятые с обоих концов строки. Конечно, вы можете использовать trim
и rtrim
для любых символов.
Обе эти функции требуют, чтобы вы указали символ(ы), от которого(ых) нужно избавиться. Иногда вы не знаете, каким является последний символ, и просто хотите избавиться от него в любом случае.
В этом случае нужно использовать:
substr($string, 0, -1)
или
substr_replace($string, "", -1)
Эти два метода удаляют символы из конца строки, независимо от того, что это за символы. Вы также можете изменить -1
на большее число и удалить больше символов.
Итак, рассмотрим наши варианты:
/* Method 1 */ rtrim("Some random text.", ".")
/* Method 2 */ trim("Some random text.", ".")
/* Method 3 */ substr("Some random text.", 0, -1)
/* Method 4 */ substr_replace("Some random text.", "", -1)
Поскольку это твердое утверждение, я не собираюсь оставлять вам 4 варианта. Я оставлю вам только один.
Выбирайте substr
. Это явный победитель. Я не помню, когда в последний раз мне приходилось законно использовать любой из трех других методов, а первые два не такие гибкие (поскольку вам нужно знать символы, которые вы удаляете).
substr
универсален и постоянно используется для работы со строками. Просто используйте его впредь. Твердое утверждение.
Для тех, кому интересно (а я знаю, что вы там есть), substr
работает даже лучше и быстрее, чем rtrim
.
Вот результаты выполнения одного миллиона итераций в следующих двух строках:
rtrim("this random string of text is short,",","); // takes 1.46 seconds
substr("this random string of text is short,",0,-1); // takes 1.42 seconds
substr
также быстрее для больших объемов текста.