Удаление последнего символа

Как и многие другие вещи в 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 также быстрее для больших объемов текста.

Была ли эта страница полезной?