Question

How do I count the entries I am scraping from JSON?

The below example has 6 entries, but as you can see.. if an entry is added, my code will ignore it. I could loop it 10 times and if it picks up nothing, then stop, but I think that's a bad way of doing it.

Is there any simple code that picks up 6 'seasons' in the following JSON?

MYPAGE.PHP

//Get the page
$str = file_get_contents('http://myjsonurl.here/');
$jsonarray = json_decode($str, true);

$season1 = $jsonarray['season_history'][0][0];
$season2 = $jsonarray['season_history'][1][0];
$season3 = $jsonarray['season_history'][2][0];
$season4 = $jsonarray['season_history'][3][0];
$season5 = $jsonarray['season_history'][4][0];
$season6 = $jsonarray['season_history'][5][0];
//the rest of the info here..

JSON

{
    "season_history": [
        ["2006/07", 2715, 12, 11, 0, 45, 0, 0, 0, 1, 0, 0, 26, 0, 91, 169],
        ["2007/08", 2989, 15, 11, 0, 56, 0, 0, 0, 3, 0, 0, 18, 0, 95, 177],
        ["2008/09", 2564, 9, 10, 0, 20, 0, 0, 0, 2, 0, 0, 14, 0, 95, 138],
        ["2009/10", 2094, 12, 6, 0, 13, 0, 0, 0, 1, 0, 0, 8, 0, 92, 130],
        ["2010/11", 2208, 21, 4, 8, 28, 0, 0, 0, 1, 0, 0, 26, 0, 92, 176],
        ["2011/12", 521, 7, 0, 2, 6, 0, 0, 0, 0, 0, 0, 5, 146, 89, 49]
    ]
}
Was it helpful?

Solution

A foreach loop may be the approach you're looking for.

For example, this code would output the years for each season in your JSON data, regardless of how many seasons there were:

//Get the page
$str = file_get_contents('http://myjsonurl.here/');
$jsonarray = json_decode($str, true);

foreach($jsonarray['season_history'] as $season) {
    echo $season[0] . PHP_EOL;
}

Alternatively, if you just need to know the number of seasons, this would be a solution:

//Get the page
$str = file_get_contents('http://myjsonurl.here/');
$jsonarray = json_decode($str, true);

$numberOfSeasons = count($jsonarray['season_history']);

You could combine that with a for loop as well, if you wanted:

for($i = 0; $i < $numberOfSeasons; $i++) {
    echo $jsonarray['season_history'][$i][0];
}

OTHER TIPS

Nevermind.. I figured it out... Here is the code I used.

//Get the page
$str = file_get_contents('http://myjsonurl.here/');
$jsonarray = json_decode($str, true);

//FOR EACH SEASON
foreach ($jsonarray['season_history'] as $var) 
{
for ($i = 0; $i <= 15; $i++)
    {
     echo $var[$i];
     //do more stuff here
    }

}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top