4

I have a json string like this:

$fields_string = '
{"fields":
   {"customers":[{"name":"john","id":"d1"},
                 {"name":"mike","id":"d2"},
                 {"name":"andrew","id":"d3"},
                 {"name":"peter","id":"d4"}]
   }
}'

How can I print each name? I will use them later in a html select options, I know how to do that. But I couldn't get the string out. Here are something I tried:

$obj = json_decode($fields_string);
$fields_detail = $obj-?{"fields"}->{"customers"};

at this point, I am able to print the customer array out by echo json_encode($fields_detail), but before that, I want to get the name break down using foreach. I tried several times, it didn't work. Can anyone help please.

Thanks!

1
  • You want to get what? How did you try? How did it not work? Commented Feb 21, 2013 at 11:18

4 Answers 4

5

Customers is an array of objects so iterating over each object and reading the property should work.

foreach ($fields_detail as $customer) {
  echo $customer->name;
}
Sign up to request clarification or add additional context in comments.

2 Comments

@koopajah you missed the second fragment of code phpfiddle.org/lite/code/xr4-8tz
I see what I have done wrong. This is just it. Thank you very much!
3

Something like this:

$data = json_decode($fields_string, true); // return array not object
foreach($data['fields']['customers'] as $key => $customer) {
 echo $customer['name']; 
}

Comments

2

Access the names via fields->customers:

$obj = json_decode($fields_string);

foreach($obj->fields->customers as $customer)
{
    echo $customer->name . "\n";
}

Demo

Comments

0
foreach($obj->fields->customers as $fields)
echo $fields->name;

Comments

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.