Почему это не работает ?: декодирование JSON в массив PHP - PullRequest
0 голосов
/ 16 мая 2011
$json = file_get_contents('outputsjson.php');

Файл кодирует массив, затем просто повторяет его, как это (и echo $json выводит это):

{"theList":{"1":{"name":"DSC04156.JPG","title":"DSC04156.JPG","width":3264},"2":{"name":"DSC04157.JPG","title":"DSC04157.JPG","width":3264},"3":{"name":"DSC04158.JPG","title":"DSC04158.JPG","width":3264},"4":{"name":"DSC04159.JPG","title":"DSC04159.JPG","width":3264}}} 

Теперь я пытаюсь декодировать его с другой страницы, например так:

$myarray = json_decode($json, true);

print_r($myarray);

Это ничего не выводит, никаких ошибок, ничего!

Ответы [ 3 ]

3 голосов
/ 16 мая 2011

Попробуйте вместо этого (вы смешиваете " и ' [одинарные кавычки вместо двойных кавычек в строке]):

$json = '{"theList":{"1":{"name":"DSC04156.JPG","title":"DSC04156.JPG","width":3264},"2":{"name":"DSC04157.JPG","title":"DSC04157.JPG","width":3264},"3":{"name":"DSC04158.JPG","title":"DSC04158.JPG","width":3264},"4":{"name":"DSC04159.JPG","title":"DSC04159.JPG","width":3264}}} ';

$myarray = json_decode($json, true);

print_r($myarray);

И ваш результат:

Array
(
    [theList] => Array
        (
            [1] => Array
                (
                    [name] => DSC04156.JPG
                    [title] => DSC04156.JPG
                    [width] => 3264
                )

            [2] => Array
                (
                    [name] => DSC04157.JPG
                    [title] => DSC04157.JPG
                    [width] => 3264
                )

            [3] => Array
                (
                    [name] => DSC04158.JPG
                    [title] => DSC04158.JPG
                    [width] => 3264
                )

            [4] => Array
                (
                    [name] => DSC04159.JPG
                    [title] => DSC04159.JPG
                    [width] => 3264
                )

        )

)
1 голос
/ 16 мая 2011

Попробуйте заключить строку json в одинарные кавычки вместо двойных:

$json = '{"theList":{"1":{"name":"DSC04156.JPG","title":"DSC04156.JPG","width":3264},"2":{"name":"DSC04157.JPG","title":"DSC04157.JPG","width":3264},"3":{"name":"DSC04158.JPG","title":"DSC04158.JPG","width":3264},"4":{"name":"DSC04159.JPG","title":"DSC04159.JPG","width":3264}}}';
0 голосов
/ 16 мая 2011

У меня не было проблем с выполнением следующего кода:

$json = '{"theList":{"1":{"name":"DSC04156.JPG","title":"DSC04156.JPG","width":3264},"2":{"name":"DSC04157.JPG","title":"DSC04157.JPG","width":3264},"3":{"name":"DSC04158.JPG","title":"DSC04158.JPG","width":3264},"4":{"name":"DSC04159.JPG","title":"DSC04159.JPG","width":3264}}}';
$myarray = json_decode($json, true);
print_r($myarray);

Я полагаю, что файл, из которого вы пытаетесь прочитать, не существует.Помните, что если вы используете Linux, имена файлов чувствительны к регистру.Используйте функцию file_exists(), чтобы проверить это:

var_dump(file_exists('outputsjson.php'));

...