- PHP: конвертирование массива в строку
- Использование функции implode()
- Функция explode()
- Использование функции json()
- Конвертировать массив в строку при помощи PHP
- 1. Функция implode()
- 2. Функция join()
- 3. Функция serialize()
- 4. Функция json_encode()
- 5. Функция print_r
- 6. Функция var_dump
- 7. Функция var_export
- array_to_string
- Как сделать работу с массивами еще проще?
- PHP Implode – Convert Array to String with Join
- PHP implode() Syntax
- Examples of Implode with an Indexed Array
- Examples of Implode with an Associative Array
- Final Thoughts
PHP: конвертирование массива в строку
В этой статье разберем как преобразовывать массив в строку и обратно.
Есть два способа преобразовать массив в строку в PHP.
Использование функции implode()
Используя функцию implode(), мы можем преобразовать все элементы массива в строку. Параметр разделителя в функции implode() является необязательным. Но хорошей практикой будет использовать оба аргумента.
$arr = array("Hello", "students", " ", "how", "are", "you"); echo implode(" ", $arr);
В приведенном выше примере в первой строке объявлена переменная массива и ей присвоены некоторые значения.
На следующей строке функция implode() преобразует массив в строку. Два параметра передаются в функцию implode(). Первый — это разделитель, а второй — массив.
Вы также можете преобразовать полученную строку если требуется обратно в массив. Для этого мы можем использовать функцию PHP explode().
Функция explode()
Используя функцию explode(), мы можем преобразовать строку в элементы массива. Мы можем передать три аргумента. Первый разделитель, второй массив и последний лимит (ограничение длинны).
explode(separator, array, limit);
$str = "Hello Students, How are you"; $arr = explode(" ", $str); print_r($arr);
В приведенном выше примере строковой переменной присваивается некоторое значение. Затем функция explode() разбивает эту строку на массив. После этого мы использовали функцию print_r(), которая печатает все элементы массива и его индексы.
Использование функции json()
В PHP объекты могут быть преобразованы в строку JSON с помощью функции json_encode().
Обычное использование JSON — это чтение данных с веб-сервера и отображение данных на веб-странице.
// Присваивание значений переменной объекта @$myObj->name="Tarun"; @$myObj->age=20; @$myObj->cidy=""Noida"; $myJSON=json_encode($myObj); echo($myJSON);
В приведенном выше примере мы присвоили значение переменной объекта, а затем в json_encode() преобразовали значение в переменную массива и создали ассоциативный массив.
Конвертировать массив в строку при помощи PHP
Если вам потребовалось преобразовать массив php в строку, то для этого есть несколько инструментов. Применение того или иного инструмента зависит от ваших целей.
Если вы ищете как решить проблему «PHP Notice: Array to string conversion in . «, то это значит, что вы, в каком-то месте вашего кода используете массив, но обрабатываете его как строку.
$array = [1,2,3]; echo $array; // Notice
Вы получите «Notice» в строке echo $array , поскольку функция echo предназначеня для вывода строк, а не массивов.
Теперь поговорим о конвертации массива в строку:
1. Функция implode()
С ее помощью можно «склеить» элементы массива в строку, через любой разделитель. Подробнее: implode
Пример:
echo implode('|', array(1, 2, 3)); // выдаст строку: 1|2|3
Подобным образом мы можем преобразовать только одномерные массивы и у нас пропадут ключи.
У этой функции есть антагонист explode , который наоборот преобразует строку в массив по разделителю.
2. Функция join()
Работает точно так же как и implode(), поскольку это просто псевдоним, выбирайте название, которое больше нравится.
Пример у нас будет идентичный:
echo join('|', array(1, 2, 3)); // выдаст строку: 1|2|3
3. Функция serialize()
Основная задача функции — преобразование переменной (в нашем случае массива) в состояние пригодное для хранения.
Она используется для сохранения массива в строку, для ее последующего преобразования обратно в массив. Вы можете сохранить массив в файл или базу данных, а затем, при следующем выполнении скрипта восстановить его.
Подробнее: serialize
$array = array( ‘1’ => ‘elem 1’, ‘2’=> ‘elem 2’, ‘3’ => ‘elem 3’); $string = serialize($array); echo $string; // выдаст строку: a:3:
Затем из этой строки, можно снова получить массив:
4. Функция json_encode()
Возвращает JSON представление данных. В нашем случае, данная функция, напоминает сериализацию, но JSON в основном используется для передачи данных. Вам придется использовать этот формат для обмена данными с javascript, на фронтенде. Подробнее: json_encode
$array = array( 1 => ‘one’, 2 => ‘two’, ); $json = json_encode($array); echo $json; //
Обратная функция json_decode() вернет объект с типом stdClass, если вторым параметром функции будет false. Либо вернет ассоциативный массив, если передать true вторым параметром
5. Функция print_r
Она подходит для отладки вашего кода. Например вам нужно вывести массив на экран, чтобы понять, какие элементы он содержит.
$array = [ 'param1' => 'val1', 'param2' => 'val2', ]; print_r($array); /* выводит на экран: Array ( [param1] => val1 [param2] => val2 ) */
6. Функция var_dump
Функция var_dump также пригодится для отладки. Она может работать не только с массивами, но и с любыми другими переменными, содержимое которых вы хотите проверить.
$array = [ 'param1' => 'val1', 'param2' => 'val2', ]; var_dump($array); /* выводит на экран: array(2) < ["param1"]=>string(4) "val1" ["param2"]=> string(4) "val2" > */
7. Функция var_export
Эта функция преобразует массив интерпритируемое значение, которое вы можете использовать для объявление этого массива. Иными словами, результат этой функции — програмный код.
$array = [ 'param1' => 'val1', 'param2' => 'val2', ]; var_export($array); /* выводит на экран: array ( 'param1' => 'val1', 'param2' => 'val2', ) */
Обратите внимание, что функции print_r , var_dump , var_export выводят результат сразу на экран. Это может быть удобно, т.к. эти функции все равно используются в основном для отладки, но при желании вы можете записать результат их выполнения в переменную. Для print_r и var_export для этого нужно установить второй параметр в true:
$result1 = print_r($array, true); $result2 = var_export($array, true);
var_dump не возвращает значение, но при желании это конечно можно сделать через буферизацию.
array_to_string
Как таковой функции array_to_string в php нет, но есть описанные выше инструменты, которых более чем достаточно для выполнения задачи. Я просто хотел напомнить, что вы никогда не ограничены этими инструментами, и можете написать то, что подходит именно под вашу задачу.
function array_to_string($array)
Как сделать работу с массивами еще проще?
Если вы используете библиотеку для работы с коллекциями, то ваш код для преобразования массива в строку может выглядеть куда более изящно:
echo collect(['a', 'b', 'c'])->implode(','); // a,b,c echo collect(['a', 'b', 'c'])->toJson(); // ["a","b","c"]
Также рекомендую обратить внимание на полезную библиотеку для работы со строками. С ее помощью вы можете выполнять операции со строками более удобно и с меньшим количеством кода.
На этом все. Обязательно прочитайте справку по данным функциям и пишите если у вас остались вопросы.
PHP Implode – Convert Array to String with Join
Kolade Chris
In PHP, the implode() function is a built-in function that takes an array and converts it to a string. implode() doesn’t modify the original array.
It doesn’t matter whether the array is an indexed or associative array. Once you pass in the array to implode() , it joins all the values to a string.
PHP implode() Syntax
implode() takes in two values as parameters – the separator and the array you want to convert to a string.
The separator could be any character or an empty string. It is valid as long as you specify it in quotes. If you don’t pass in the separator, implode() still works. The array on the other hand could be an associative array or an indexed array.
NB: implode() doesn’t work with nested arrays.
The full syntax of an implode() looks like this:
In the syntax above, an empty space (» «) is the separator, and $array is the array.
Examples of Implode with an Indexed Array
In PHP, an indexed array is what it sounds like – each value in the array has an index automatically assigned to it. You can also assign the indexes if you want.
Below is an example of how implode() works with an indexed array:
Note that I did not pass in a separator and implode() still works fine.
In the example below, I passed in an empty space, comma, and hyphen as separators:
"."
"; echo $newLangsComma."
"."
"; echo $newLangsHyphen ."
"; ?>
You can see it’s better to specify a separator so you can see the values well.
Examples of Implode with an Associative Array
You define a named index with an associative array. Let’s see how implode() works with associative arrays.
"Kolade", 'last_name' => "Chris", 'likes' => "football and Pro-wrestling", 'email' => "kolade@gmail.com", ]; //That's not my email. Don't bother sending me a message. $newPerson = implode(" ", $person); echo $newPerson."
"; ?>
You can see the indexes were not printed. To print the indexes too, you need to attach the array to the array_keys() method while printing the array:
"Kolade", 'last_name' => "Chris", 'likes' => "football and Pro-wrestling", 'email' => "kolade@gmail.com", ]; // That’s not my email. Don't bother sending me a message. $newPersonValues = implode(", ", $person)."
"; $newPersonKeys = implode(", ", array_keys($person)); echo $newPersonKeys."
"; echo $newPersonValues; ?>
To prove that the original array is never modified, I’ll print the array alongside the imploded variables:
"Kolade", 'last_name' => "Chris", 'likes' => "football and Pro-wrestling", 'email' => "kolade@gmail.com", ]; // That's not my email. Don't bother sending me a message. $newPersonValues = implode(", ", $person)."
"; $newPersonKeys = implode(", ", array_keys($person)); echo $newPersonKeys."
"; echo $newPersonValues."
"; print_r($person); ?>
You can use the PHP View Chrome extension to format your printed array so it can look better:
Final Thoughts
In this article, you learned about the implode() function in PHP and how it works. We looked at how the implode() function works with both indexed and associative arrays, too, with examples.
Don’t forget that implode() doesn’t work with nested arrays (multidimensional arrays). In fact, I can prove it:
It doesn’t work that way because implode() only works with flat arrays ( [ ] ) instead of multidimensional arrays ( [ [ ] ] ). Implode looks at the first array, and once it sees that the first array has many arrays in it, it throws an error.