Задана длинная строка, разделенная запятой.
Задача состоит в том, чтобы разделить заданную строку запятой-разделителем и сохранить результат в массиве.
Примеры:
Input: red,blue,yellow
Output: Array ( [0] => red [1] => blue [2] => yellow )
Input: practice, code
Output: Array ( [0] => practice [1] => code )
Ниже приведены способы преобразования строки, разделенной запятыми, в массив в PHP:
Тематический листинг:
Функции PHP explode() и preg_split():
С использованием str_getcsv()
С использованием цикла for
Функции PHP explode() и preg_split():b
И explode(), и preg_split() полезны для разделения строк в PHP.
explode() проще и быстрее при работе с разделителем из одного символа, в то время как
preg_split() предлагает возможности регулярных выражений для более сложных задач разделения.
explode() используйте для простых случаев и
preg_split() для сложных разбиений на основе шаблонов.
<?php
// Use preg_split() function
$string = "123,456,78,000";
$str_arr = preg_split ("/\,/", $string);
print_r($str_arr);
// use of explode
$string = "123,46,78,000";
$str_arr = explode (",", $string);
print_r($str_arr);
?>
Получаем:
Output
Array
(
[0] => 123
[1] => 456
[2] => 78
[3] => 000
)
Array
(
[0] => 123
[1] => 46
[2] => 78
[3] => 000
)
Используя str_getcsv()
Этот PHP-скрипт использует str_getcsv() для преобразования строки $string, разделенной запятыми, в массив, обрабатывая правила форматирования CSV, такие как значения, заключенные в кавычки с запятыми, и выводит результирующую структуру массива.
<?php
// Comma-delimited string
$string = "apple,banana,cherry,date";
// Split string into an array using str_getcsv
$array = str_getcsv($string);
// Output the resulting array
print_r($array);
?>
Получаем:
Array
(
[0] => apple
[1] => banana
[2] => cherry
[3] => date
)
Используя цикл for
В этом подходе мы инициализируем переменные для хранения текущего слова и конечного массива, затем перебираем каждый символ в строке, затем добавляем символы к текущему слову, пока не будет найдена запятая, затем добавляем текущее слово в массив и сбрасываем его. После завершения цикла добавьте последнее слово в массив, чтобы завершить разбиение.
Пример:
<?php
$string = "welcome, to, gfg";
$array = [];
$current_word = "";
// Loop through each character in the string
for ($i = 0; $i < strlen($string); $i++) {
if ($string[$i] === ',') {
// Add the current word to the array and reset it
$array[] = $current_word;
$current_word = "";
} else {
// Append character to the current word
$current_word .= $string[$i];
}
}
// Add the last word to the array
$array[] = $current_word;
print_r($array);
?>
Получаем
Array
(
[0] => welcome
[1] => to
[2] => gfg
)
источник