4

would any of you know a good way to put this into an associative array . I have tried json_decode but found it to not be much help.

This is the data i need to put into an associative array:

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

EDIT:

After I accepted the answer, I remembered why I thought that the json_decode wasn't working.

Instead of having an associative array like this:

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

I wanted one like this:

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

Unfortunately, I had forgotten this at the time.. but I have resolved my issue now anyway.

Thanks for all of your help!

2
  • just in case ... it's not allowed to store facebook-user data except the uid longer than 24 hours ... Commented Jun 18, 2010 at 21:37
  • 1
    @helle: that's no longer the case Commented Jun 18, 2010 at 22:08

3 Answers 3

10

json_decode works for me on your data:

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));

Output:

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
                )

        )

)

Setting the second argument to true returns an associative array.

Sign up to request clarification or add additional context in comments.

1 Comment

Thanks for your answer webbiedave, if you view my last comment on helle's comment you'll see what I did. +1 for the response I was looking for!
3

You have to make a new array

$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'];
}

you will get your associative array in $assoc_array and you can now directly access using indexes.

1 Comment

That's what I needed.
2

i asume your json comes via ajax.... (otherwise the code works with json_decode) so be sure the js json stringifys your object and

you'll need to stripslashes before json_decode ;-) in php

1 Comment

It doesn't come via AJAX but for some reason, now when I use json_decode it works as i initally expected it to. Very strange because when I remove stripslashes, it also works... maybe I messed something up when I previously tried it. Many Thanks helle for nudging me back on track :o)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.