Преобразование строк в массив и наоборот на PHP
Как преобразовать на php массив в строку с разделителями?
В разработке сайтов на PHP часто нужно сделать из массива строку разделенную например запятыми, в основном такие строки используются для формирования JS кода на PHP
Для в php существует функция implode которая объединяет элементы простого одномерного массива в строку с разделителями указанными в 1-м параметре функции implode
implode($separate, $array)
implode — возвращает строку, полученную путем объединения строковых элементов массива $array, со вставкой строки $separate между соседними элементами.
Функция implode безопасна для обработки данных в двоичной форме.
Пример работы implode:
php implode для вложенных массивов
Если передать в функцию implode в качестве параметра многомерный массив, то результат выдаст ошибку «Array to string conversion». Чтобы избежать такой ситуации используйте решение для функции implode в виде рекурсивного вызова
Также в обратном порядке преобразовать строку с разделителями в массим можно функцией explode, которая возвращает одномерный массив, полученный путем разбиения строки по указанному разделителю
Пример использования php функции explode:
PHP — Как преобразовать массив в строку

Рано или поздно каждый веб-разработчик в своих проектах сталкивается с такой задачей как из массива собрать строку в языке программирования PHP. Один из таких примеров почему может понадобиться собрать строку из массива так это когда вам из формы пришли данные о дате рождения пользователя в виде массива, и нужно из этого массива собрать строку и добавить эту строку в одно их полей вашей базы данных.
В этой статье мы поговорим о том какие есть простые встроенные php функции которые помогут вам собрать строку их массива без каких либо трудностей.
- PHP функция implode.
- PHP функция join.
- Итоги.
1. PHP функция implode.
Первая функция о которой мы поговорим, называется implode. Функция implode принимает два обязательных параметра, первый параметр это соединитель, по умолчанию значения параметра пустая строка, а второй параметр это сам массив. Функция как вы уже поняли возвращает строку в случаи успеха, а в противном случае возникнет исключения.
implode(string $separator, array $array): string

Как видим из примера у нас есть массив из трех элементов, и я захотел чтобы из этого массива получилась строка и между значениями каждого из элементов массива была запятая.
2. PHP функция join.
Вторая функция которая нам поможет собрать из массива строку называется join. Функция join такая же по своему функционалу, как и функция implode.
join(string $separator, array $array): string

В результате мы получаем такую же строку, как и при использовании функции implode.
3. Итоги.
В итоги коллеги мы сегодня успешно познакомились с тем чтобы из массива можно было собрать строку без каких-либо проблем. Функции которые мы сегодня разбирали, абсолютно одинаковые по своему функционалу, и вы можете использовать ту, которая вам больше всего понравилась.
Всем спасибо, я надеюсь что вам моя статья хоть чем-то помогла.
PHP: конвертирование массива в строку
В этой статье разберем как преобразовывать массив в строку и обратно.
Есть два способа преобразовать массив в строку в PHP.
- Использование функции implode()
- Использование функции json_encode()
Использование функции implode()
Используя функцию implode(), мы можем преобразовать все элементы массива в строку. Параметр разделителя в функции implode() является необязательным. Но хорошей практикой будет использовать оба аргумента.
implode(separator, array);
$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 — это чтение данных с веб-сервера и отображение данных на веб-странице.
json_encode(obj_name);
// Присваивание значений переменной объекта @$myObj->name="Tarun"; @$myObj->age=20; @$myObj->cidy=""Noida"; $myJSON=json_encode($myObj); echo($myJSON);
В приведенном выше примере мы присвоили значение переменной объекта, а затем в json_encode() преобразовали значение в переменную массива и создали ассоциативный массив.
implode
Альтернативная сигнатура (не поддерживается с именованными аргументами):
implode ( array $array ): string
Устаревшая сигнатура (устарела с PHP 7.4.0, удалена в PHP 8.0.0):
implode ( array $array , string $separator ): string
Объединяет элементы массива с помощью строки separator .
Список параметров
Необязательный. По умолчанию равен пустой строке.
Массив объединяемых строк.
Возвращаемые значения
Возвращает строку, содержащую строковое представление всех элементов массива в указанном порядке, с разделителем между каждым элементом.
Список изменений
| Версия | Описание |
|---|---|
| 8.0.0 | Передача separator после array больше не поддерживается. |
| 7.4.0 | Передача separator после array (т.е. использование недокументированного порядка параметров) устарела. |
Примеры
Пример #1 Пример использования implode()
$array = [ ‘имя’ , ‘почта’ , ‘телефон’ ];
var_dump ( implode ( «,» , $array )); // string(32) «имя,почта,телефон»
// Пустая строка при использовании пустого массива:
var_dump ( implode ( ‘привет’ , [])); // string(0) «»
// Параметр separator не обязателен:
var_dump ( implode ([ ‘a’ , ‘b’ , ‘c’ ])); // string(3) «abc»
Примечания
Замечание: Эта функция безопасна для обработки данных в двоичной форме.
Смотрите также
- explode() — Разбивает строку с помощью разделителя
- preg_split() — Разбивает строку по регулярному выражению
- http_build_query() — Генерирует URL-кодированную строку запроса
User Contributed Notes 14 notes
14 years ago
it should be noted that an array with one or no elements works fine. for example:
$a1 = array( «1» , «2» , «3» );
$a2 = array( «a» );
$a3 = array();
echo «a1 is: ‘» . implode ( «‘,'» , $a1 ). «‘
» ;
echo «a2 is: ‘» . implode ( «‘,'» , $a2 ). «‘
» ;
echo «a3 is: ‘» . implode ( «‘,'» , $a3 ). «‘
» ;
?>
will produce:
===========
a1 is: ‘1’,’2′,’3′
a2 is: ‘a’
a3 is: »
4 years ago
It’s not obvious from the samples, if/how associative arrays are handled. The «implode» function acts on the array «values», disregarding any keys:
declare( strict_types = 1 );
$a = array( ‘one’ , ‘two’ , ‘three’ );
$b = array( ‘1st’ => ‘four’ , ‘five’ , ‘3rd’ => ‘six’ );
echo implode ( ‘,’ , $a ), ‘/’ , implode ( ‘,’ , $b );
?>
outputs:
one,two,three/four,five,six
10 years ago
Can also be used for building tags or complex lists, like the following:
$elements = array( ‘a’ , ‘b’ , ‘c’ );
- » . implode ( «
- » , $elements ) . «
?>
This is just an example, you can create a lot more just finding the right glue! 😉
7 years ago
It might be worthwhile noting that the array supplied to implode() can contain objects, provided the objects implement the __toString() method.
class Foo
protected $title ;
public function __construct ( $title )
$this -> title = $title ;
>
public function __toString ()
return $this -> title ;
>
>
$array = [
new Foo ( ‘foo’ ),
new Foo ( ‘bar’ ),
new Foo ( ‘qux’ )
];
echo implode ( ‘; ‘ , $array );
?>
will output:
12 years ago
If you want to implode an array of booleans, you will get a strange result:
var_dump ( implode ( » ,array( true , true , false , false , true )));
?>
Output:
string(3) «111»
TRUE became «1», FALSE became nothing.
3 years ago
If you want to implode an array as key-value pairs, this method comes in handy.
The third parameter is the symbol to be used between key and value.
function mapped_implode ( $glue , $array , $symbol = ‘=’ ) return implode ( $glue , array_map (
function( $k , $v ) use( $symbol ) <
return $k . $symbol . $v ;
>,
array_keys ( $array ),
array_values ( $array )
)
);
>
echo mapped_implode ( ‘, ‘ , $arr , ‘ is ‘ );
// output: x is 5, y is 7, z is 99, hello is World, 7 is Foo
2 years ago
Sometimes it’s necessary to add a string not just between the items, but before or after too, and proper handling of zero items is also needed.
In this case, simply prepending/appending the separator next to implode() is not enough, so I made this little helper function.
function wrap_implode ( $array , $before = » , $after = » , $separator = » ) if( ! $array ) return » ;
return $before . implode ( » < $after >< $separator > < $before >» , $array ) . $after ;
>
echo wrap_implode ([ ‘path’ , ‘to’ , ‘file.php’ ], ‘/’ );
// «/path/to/file.php»
$pattern = ‘#’ . wrap_implode ([ 4 , 2 , 2 ], ‘\d’ , ‘[-.]’ ) . ‘#’ ;
echo $pattern , «\n» ; // #\d[-.]\d[-.]\d#
echo preg_replace ( $pattern , ‘[REDACTED]’ , ‘The UFO appeared between 2012-12-24 and 2013.01.06 every night.’ );
// ‘The UFO appeared between [REDACTED] and [REDACTED] every night.
echo wrap_implode ([ ‘line’ , ‘by’ , ‘line’ ], ‘‘ , ‘‘ , ‘
‘ );
// line
by
line
10 years ago
It may be worth noting that if you accidentally call implode on a string rather than an array, you do NOT get your string back, you get NULL:
var_dump ( implode ( ‘:’ , ‘xxxxx’ ));
?>
returns
NULL
This threw me for a little while.
11 years ago
Even handier if you use the following:
$id_nums = array( 1 , 6 , 12 , 18 , 24 );
$id_nums = implode ( «, » , $id_nums );
$sqlquery = «Select name,email,phone from usertable where user_id IN ( $id_nums )» ;
// $sqlquery becomes «Select name,email,phone from usertable where user_id IN (1,6,12,18,24)»
?>
Be sure to escape/sanitize/use prepared statements if you get the ids from users.
8 years ago
null values are imploded too. You can use array_filter() to sort out null values.
$ar = array( «hello» , null , «world» );
print( implode ( ‘,’ , $ar )); // hello,,world
print( implode ( ‘,’ , array_filter ( $ar , function( $v )< return $v !== null ; >))); // hello,world
?>
3 years ago
If you want to use a key inside array:
Example:
$arr=array(
array(«id» => 1,»name» => «Test1»),
array(«id» => 2,»name» => «Test2»),
);
echo implode_key(«,»,$arr, «name»);
OUTPUT: Test1, Test2
function implode_key($glue, $arr, $key) $arr2=array();
foreach($arr as $f) if(!isset($f[$key])) continue;
$arr2[]=$f[$key];
>
return implode($glue, $arr2);
>
6 years ago
It is possible for an array to have numeric values, as well as string values. Implode will convert all numeric array elements to strings.
$test = implode ([ «one» , 2 , 3 , «four» , 5.67 ]);
echo $test ;
//outputs: «one23four5.67»
?>
2 years ago
There is no mention of behavior on a empty array, so I tried it and here’s the result:
$ar = array();
$result = implode ( ‘,’ , $ar ); // Comma arbitrarily applied as the separator
$is_result_empty = empty( $result );
?>
$result:
$is_result_empty: 1
In other words, an empty string is the result.
3 years ago
* Join pieces with a string recursively .
*
* @ param mixed $glue String between pairs ( glue ) or an array pair ‘s glue and key/value glue or $pieces.
* @param iterable $pieces Pieces to implode (optional).
* @return string Joined string
*/
function double_implode($glue, iterable $pieces = null): string
$glue2 = null;
if ($pieces === null) $pieces = $glue;
$glue = »;
> elseif (is_array($glue)) list($glue, $glue2) = $glue;
>
?php
$result = [];
foreach ($pieces as $key => $value) $result[] = $glue2 === null ? $value : $key . $glue2 . $value;
>
return implode($glue, $result);
>
?>
Examples:
$array = [‘ a ‘ => 1, ‘b’ => 2];
$str = implode($array);
$str = implode(‘ , ‘, $array);
$str = implode([‘» ‘, ‘ keyword»>, ‘, $iterator);
$str = implode([‘» ‘, ‘ foot»>+add a note
- Copyright © 2001-2023 The PHP Group
- My PHP.net
- Contact
- Other PHP.net sites
- Privacy policy
