JSON в PHP Ассоциативный массив - PullRequest
2 голосов
/ 19 июня 2010

Кто-нибудь из вас знает хороший способ поместить это в ассоциативный массив.Я попытался json_decode, но нашел, что это не сильно поможет.

Это данные, которые мне нужно поместить в ассоциативный массив:

   {
       "data": [
          {
             "name": "Joe Bloggs",
             "id": "203403465"
          },
          {
             "name": "Fred Bloggs",
             "id": "254706567"
          },
          {
             "name": "Barny Rubble",
             "id": "453363843"
          },
          {
             "name": "Homer Simpson",
             "id": "263508546"
          }
       ]
    }

РЕДАКТИРОВАТЬ:

После того, как я принял ответ, я вспомнил, почему я думал, что код json_dec не работает.

Вместо того, чтобы иметь ассоциативный массив, как это:

[0] => Array
(
    [name] => Joe Bloggs
    [id] => 203403465
)

Мне хотелось вот так:

Array
(
    [Joe Bloggs] => 45203340465
    [Fred Bloggs] => 65034033446
)

К сожалению, я забыл об этом в то время ... но я все равно решил свою проблему.

Спасибо за вашу помощь!

Ответы [ 3 ]

8 голосов
/ 19 июня 2010

json_decode работает для меня на ваших данных:

print_r(json_decode('{
       "data": [
          {
             "name": "Joe Bloggs",
             "id": "203403465"
          },
          {
             "name": "Fred Bloggs",
             "id": "254706567"
          },
          {
             "name": "Barny Rubble",
             "id": "453363843"
          },
          {
             "name": "Homer Simpson",
             "id": "263508546"
          }
       ]
    }
', true));

Выход:

Array
(
    [data] => Array
        (
            [0] => Array
                (
                    [name] => Joe Bloggs
                    [id] => 203403465
                )

            [1] => Array
                (
                    [name] => Fred Bloggs
                    [id] => 254706567
                )

            [2] => Array
                (
                    [name] => Barny Rubble
                    [id] => 453363843
                )

            [3] => Array
                (
                    [name] => Homer Simpson
                    [id] => 263508546
                )

        )

)

Установка второго аргумента на true возвращает ассоциативный массив.

2 голосов
/ 19 июня 2010

я полагаю, ваш json приходит через ajax .... (в противном случае код работает с json_decode) поэтому убедитесь, что js json stringifys ваш объект и

перед json_decode вам нужно удалить полоску ;-) в php

1 голос
/ 12 июля 2012

Вы должны создать новый массив

$json_array = json_decode($_POST['json'], true);
$assoc_array = array();

for($i = 0; $i < sizeof($json_array); $i++)
{
     $key = $json_array[$i]['name'];
     $assoc_array[$key] = $json_array[$i]['value'];
}

вы получите свой ассоциативный массив в $ assoc_array, и теперь вы можете напрямую получать доступ с помощью индексов.

...