简体   繁体   中英

Count entries in a JSON Array?

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]
    ]
}

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

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
    }

}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM