Reputation: 1368
Array ( [status] => success
[stories] => Array (
[0] => Array ( [name] => John Doe
[age] => 23)
[1] => Array ( [name] => John Doe_1
[age] => 23)
[2] => Array ( [name] => John Doe_2
[age] => 23)
)
)
When I try
foreach($stories as $story){ }
It returns an error.
Update: I am trying to pull out the most recent stories from Tweetmeme. Since the json output was long, I shortened it. :)
The PHP Code:
$json=file_get_contents($url);
$data=json_decode($json,true);
print_r($data);
foreach($stories as $story){
$title = mysql_real_escape_string($story['title']);
$url_temp = mysql_real_escape_string($story['url']);
$tweets = intval($story['url_count']);
JSON Output:
Array ( [status] => success
[stories] => Array ( [0] => Array ( [title] => Steve Jobs has a Flash enabled iPad! [photo] [url] => http://thenextweb.com/shareables/2010/03/08/flash-ipad/ [media_type] => news [created_at] => 2010-03-08 09:11:40 [url_count] => 151 [tm_link] => http://tweetmeme.com/story/688449947 [comment_count] => 0 [excerpt] => Steve Jobs has a Flash enabled iPad! http://tnw.to/15mht [photo] [alias] => http://ow.ly/1pVNX0 [retweet] => RT @tweetmeme Steve Jobs has a Flash enabled iPad! [photo] http://ow.ly/1pVNX0 ) [1] => Array ( [title] => Scientists reaffirm theory that giant asteroid killed dinosaurs - CNN.com [url] => http://www.cnn.com/2010/TECH/science/03/08/dinosaurs.asteroid/ [media_type] => news [created_at] => 2010-03-08 08:12:37 [url_count] => 222 [tm_link] => http://tweetmeme.com/story/688253916 [comment_count] => 0 [excerpt] => (CNN) -- A team of scientists has agreed that a giant asteroid killed off dinosaurs and a majority of other species on Earth more than 65 million years ago. [thumbnail] => http://tweetmeme.s3.amazonaws.com/thumbs/688253916.jpg [alias] => http://ow.ly/1pVG7L [retweet] => RT @tweetmeme Scientists reaffirm theory that giant asteroid killed dinosaurs - CNN.com http://ow.ly/1pVG7L ) [2] => Array ( [title] => The New York Times is hiring 12 techies and a social media whiz [url] => http://venturebeat.com/2010/03/08/nyt-nytimes-hiring/ [media_type] => news [created_at] => 2010-03-08 10:30:57 [url_count] => 199 [tm_link] => http://tweetmeme.com/story/688719545 [comment_count] => 1 [excerpt] => While pundits climb over each other to predict the death of The New York Times Company, the NYT is looking to hire at least a dozen full-time software engineers and Web designers, plus one social media marketing manager. One opening carries the sexy title of Creative Technologist.The jobs, located in New York City, will focus on expanding content distribution and advertising opportunities in… [thumbnail] => http://tweetmeme.s3.amazonaws.com/thumbs/688719545.jpg [alias] => http://bit.ly/bFqAm7 [retweet] => RT @tweetmeme The New York Times is hiring 12 techies and a social media whiz http://bit.ly/bFqAm7 )
Upvotes: 2
Views: 247
Reputation: 5736
You simply forgot to initialize the variable $data. Please include this line before the for-loop:
$stories = $data['stories'];
Keep in mind that json_decode itself does not create local variables!
Upvotes: 3
Reputation: 682
try
foreach ($data AS $story){
if(is_array($story)) {
foreach($story as $person) {
print_r($person);
}
}
}
Upvotes: 0
Reputation: 3070
Do you need to reference the variable you have the array in? Something like foreach($json.stories as $story) ...
?
Upvotes: 1
Reputation: 737
for ($i = 0; $i < count($array1['abc']); $i++)
{
$current = $array1['abc'][$i];
}
That should do it.
Upvotes: 0
Reputation: 150829
You could also do it like this:
foreach($stories as $story) {
if(is_array($story)) {
foreach($story as $person) {
print "{$person['name']}, {$person['age']}<br />";
}
}
}
That gives you a bit of flexibility if the key containing the sub-array changes or if your data is ever going to have multiple sub-arrays with data in them.
Upvotes: 2
Reputation: 25391
Not sure what error does it return, but have you tried
foreach($stories['abc'] as $story){
}
instead?
Upvotes: 1