Как преобразовать массив в строку, используя методы, отличные от JSON?

Какая функция в PHP используется для преобразования массива в строку, кроме использования JSON?

Я знаю, что есть функция, которая напрямую похожа на JSON. Я просто не помню.


person maniclorn    schedule 25.07.2011    source источник
comment
что будет типичным вводом и какой результат вы ожидаете от преобразованного массива?   -  person Yanick Rochon    schedule 25.07.2011


Ответы (8)


serialize() — это функция, которую вы ищете. Он вернет строковое представление своего входного массива или объекта во внутреннем формате, специфичном для PHP. Строка может быть преобразована обратно в исходную форму с помощью unserialize().

Но имейте в виду, что не все объекты сериализуемы, а некоторые могут быть сериализуемы лишь частично и не могут быть полностью восстановлены с помощью unserialize().

$array = array(1,2,3,'foo');
echo serialize($array);

// Prints
a:4:{i:0;i:1;i:1;i:2;i:2;i:3;i:3;s:3:"foo";}
person Michael Berkowski    schedule 25.07.2011

Используйте функцию implode():

$array = array('lastname', 'email', 'phone');
$comma_separated = implode(",", $array);
echo $comma_separated; // lastname,email,phone
person Tjekkles    schedule 25.07.2011

читабельный вывод!

echo json_encode($array);     //outputs--->    "name1":"value1",  "name2":"value2",  ...

OR

echo print_r($array, true);
person T.Todua    schedule 24.04.2015

Вы ищете serialize(). Вот пример:

$array = array('foo', 'bar');

//Array to String
$string = serialize($array);

//String to array
$array = unserialize($string);
person technology    schedule 25.07.2011

Еще одна хорошая альтернатива — http_build_query.

$data = array('foo'=>'bar',
              'baz'=>'boom',
              'cow'=>'milk',
              'php'=>'hypertext processor');

echo http_build_query($data) . "\n";
echo http_build_query($data, '', '&');

Будет печатать

foo=bar&baz=boom&cow=milk&php=hypertext+processor
foo=bar&baz=boom&cow=milk&php=hypertext+processor

Подробнее здесь http://php.net/manual/en/function.http-build-query.php

person casivaagustin    schedule 15.08.2014

используйте php implode() или serialize()

person umesh unnikrishnan    schedule 19.02.2013

Отобразить массив красиво:

function arrayDisplay($input)
{
    return implode(
        ', ',
        array_map(
            function ($v, $k) {
                return sprintf("%s => '%s'", $k, $v);
            },
            $input,
            array_keys($input)
        )
    );
}

$arr = array('foo'=>'bar',
              'baz'=>'boom',
              'cow'=>'milk',
              'php'=>'hypertext processor');

echo arrayDisplay($arr);

Дисплеи:

foo => 'bar', baz => 'boom', cow => 'milk', php => 'hypertext processor'
person Somnath Muluk    schedule 02.09.2015

Есть разные способы сделать это, некоторые из них дали. implode(), join(), var_export(), print_r(), serialize(), json_encode()exc... Вы также можете написать свою функцию без них:

Цикл For() очень полезен. Вы можете добавить значение вашего массива к другой переменной следующим образом:

<?php
    $dizi=array('mother','father','child'); //This is array

    $sayi=count($dizi);
    for ($i=0; $i<$sayi; $i++) {
        $dizin.=("'$dizi[$i]',"); //Now it is string...
    }
         echo substr($dizin,0,-1); //Write it like string :D
?>

В этом коде мы добавили значения $dizi и запятую в $dizin:

$dizin.=("'$dizi[$i]',");

Теперь

$dizin = 'mother', 'father', 'child',

Это строка, но в ней есть лишняя запятая :)

И затем мы удалили последнюю запятую, substr($dizin, 0, -1);

Выход:

«мать», «отец», «ребенок»

person BARIS KURT    schedule 03.12.2015