Solved

parsing JSON in php

Posted on 2010-09-17
3
399 Views
Last Modified: 2013-11-08
So i am trying to get the script below to work, i want to echo out all the id's so something like

st jo

but i cannot get it to work, i get an error, my foreach loop has something wrong in it
<?php

  

  $orig = '[{"id": "st","name": "steve"},{"id": "jo","name": "joey"}]';



$json = json_decode($orig);



echo $json[0]->id;



foreach($json->id as $val)

{

    echo($val);

}



//var_dump($json);

  

  

?>

Open in new window

0
Comment
Question by:Brant Snow
3 Comments
 
LVL 4

Author Comment

by:Brant Snow
ID: 33703355
actually ideally would be a way to echo out all the results of the object like

foreach($json as $val)
{
echo $val->id;
echo $val->name;

}

so i would get something like

st steve jo joey
0
 
LVL 43

Assisted Solution

by:Chris Stanyon
Chris Stanyon earned 150 total points
ID: 33703422
Here you go



$orig = '[{"id": "st","name": "steve"},{"id": "jo","name": "joey"}]';

$json = json_decode($orig);



foreach($json as $val)

{

	echo $val->id . " - " . $val->name;

}

Open in new window

0
 
LVL 108

Accepted Solution

by:
Ray Paseur earned 350 total points
ID: 33707869
The code snippet outputs this, thus proving that ChrisStanyon's solution works.  You can also get json_decode() to give you an array (second part of the example).

If you use var_dump() to print out objects and arrays, you will find that it is very helpful!

Best, ~Ray
---
array(2) {
  [0]=>
  object(stdClass)#1 (2) {
    ["id"]=>
    string(2) "st"
    ["name"]=>
    string(5) "steve"
  }
  [1]=>
  object(stdClass)#2 (2) {
    ["id"]=>
    string(2) "jo"
    ["name"]=>
    string(4) "joey"
  }
}

st == steve
jo == joey
array(2) {
  [0]=>
  array(2) {
    ["id"]=>
    string(2) "st"
    ["name"]=>
    string(5) "steve"
  }
  [1]=>
  array(2) {
    ["id"]=>
    string(2) "jo"
    ["name"]=>
    string(4) "joey"
  }
}

st == steve
jo == joey

<?php // RAY_temp_thawts.php

error_reporting(E_ALL);

echo "<pre>" . PHP_EOL;







// TEST DATA FROM THE POST AT EE

$json = '[{"id": "st","name": "steve"},{"id": "jo","name": "joey"}]';







// TRY TO DECODE IT.  MAN PAGE: http://us2.php.net/manual/en/function.json-decode.php

$obj = json_decode($json);



// USE DATA VISUALIZATION TO SEE WHAT WE GOT

var_dump($obj);



// USE AN ITERATOR TO PROCESS THE OBJECT

foreach($obj as $val)

{

    echo PHP_EOL . $val->id . " == " . $val->name;

}

echo PHP_EOL;





// ANOTHER WAY - USING AN ARRAY

$arr = json_decode($json, TRUE);



// USE DATA VISUALIZATION TO SEE WHAT WE GOT

var_dump($arr);



// USE AN ITERATOR TO PROCESS THE ARRAY

foreach($arr as $thing)

{

    echo PHP_EOL . $thing['id'] . " == " . $thing['name'];

}

echo PHP_EOL;

Open in new window

0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

These days socially coordinated efforts have turned into a critical requirement for enterprises.
This article discusses four methods for overlaying images in a container on a web page
Explain concepts important to validation of email addresses with regular expressions. Applies to most languages/tools that uses regular expressions. Consider email address RFCs: Look at HTML5 form input element (with type=email) regex pattern: T…
The viewer will learn how to look for a specific file type in a local or remote server directory using PHP.

920 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

13 Experts available now in Live!

Get 1:1 Help Now