Конвертировать массив в строку при помощи 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:{i:1;s:6:"elem 1";i:2;s:6:"elem 2";i:3;s:7:" elem 3";}

Затем из этой строки, можно снова получить массив:

$array = unserialize($string);

4. Функция json_encode()

Возвращает JSON представление данных. В нашем случае, данная функция, напоминает сериализацию, но JSON в основном используется для передачи данных. Вам придется использовать этот формат для обмена данными с javascript, на фронтенде. Подробнее: json_encode

Пример

$array = array(
    1 => 'one',
    2 => 'two',
);

$json = json_encode($array);

echo $json; // {"1":"one","2":"two"}

Обратная функция 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) {
    ob_start();
    var_dump($array);
    return ob_get_clean();
}

Как сделать работу с массивами еще проще?

Если вы используете библиотеку для работы с коллекциями, то ваш код для преобразования массива в строку может выглядеть куда более изящно:

echo collect(['a', 'b', 'c'])->implode(','); // a,b,c

echo collect(['a', 'b', 'c'])->toJson(); // ["a","b","c"]

Также рекомендую обратить внимание на полезную библиотеку для работы со строками. С ее помощью вы можете выполнять операции со строками более удобно и с меньшим количеством кода.

На этом все. Обязательно прочитайте справку по данным функциям и пишите если у вас остались вопросы.