Ik ben beginnend php'er en enthousiasteling, en probeer momenteel een script te maken dat het aantal videoviews van een aantal YouTube video's optelt en uiteindelijk als JSON file wegschrijft.

Wat ik nu heb begint te werken, maar de loop doet nog niet wat ik wil.

Wat er nu is:

<?php

$api_key = 'xxxxx';

stream_context_set_default(['http' => ['ignore_errors' => true]]);

$youtube = array(

"Aflevering 1" => array("i4YQo5iiEWA","etVDzpVFJvE","SpgKZnxmobQ","j2R-2C15q-Y","WaTXz9rYYp4"),
"Aflevering 2" => array("89PEH2BPlRE","achDU_HZ2Do","zvHxXPXHt6Q","O5C0GSIAJeU","hEE8qNcbGn0"),
"Aflevering 3" => array("Aq08WIlmkHY","Jvh1aNmQso4","8SiVe9cOh48","r4ackhwW62A","sFHysj3pqj8"),
"Aflevering 4" => array("0qx1eIxOdNc","djJUOBJqHSI","pvWLxcebr5M","OaIInj0RZ5M","eRguBy5Ux-0"),
"Aflevering 5" => array("tnHyrsos5Rw","yfNWFAziJic","Ug4qs7d5B5E","qLaKrjBuYGA","azQgWmXUbuM"),
"Aflevering 6" => array("rPlLTJkS_ow","EAOHeUjgR0Q","OjC3ScZtA7s","kmbfEfOrsrs","HsnI_NuCvJc"),
"Aflevering 7" => array("CI3UF2UfQ-s","XMJ9tWYEtLk","EBuWmb5s3_E","i_4z6szdPOg","X9jwpIMUYlU"),
"Aflevering 8" => array("B12-71E8Bus","8BTHU4Zbgso","o4wlwXFtz3s","jyplFCJTyrQ","kXTjuXwctVs"),
"Aflevering 9" => array("zs6qW0kvnI8","64WWtaBPaps","CxwptyE7J4A","13IUwg3CMdk","nii5lLJ3-cM"),
"Aflevering 10" => array("OEuGFez7bxg","cf67BukebyE","OGib0s8sp5c"),
"Aflevering 11" => array("TVvKklHqJNk","-Z1GP5Ey6Kc","rxMAgU0p-s8","J-pv1U7ib2o","BwRz3dluvMQ"),
"Aflevering 12" => array("VkIqLwvYj3k","3qKpfTq9v0E","EBywQf2mr5Q","D9h1PC3CLAg","Xn24-p4GewY"),
"Aflevering 13" => array("ceCjhE2GHLo","KO97J7msQko","PzHopifTiGE","iJF0FzZ8UUs","lknDWsh71gY"),
"Aflevering 14" => array("KW508H54dXw","OEkczQ5G3tY","ZQu7cgZfAEA","GnQap8jCo90","FeyVGvKuRQg"),
"Aflevering 15" => array("FIjK3Obpy5A","uuq1VrIxT_I","AKXuQOA89QI","erpceDVsEAY","R2-hFSvWifc"),
"Aflevering 16" => array("VrrxoL7Oods","e3kN6Ii5qQg","-LfXGyCOFAQ","tmqUyAQTHX0","vEwk1EulzAo","cfSzn85fPoE"),
"Aflevering 17" => array("AUT9O9btXu8","SDrMoTGQ95Y","YJPqZyKeFQY","w0TXYSWZeMc","zGkgezLErfM")

);

foreach($youtube as $key => $values){

$sum=0;
foreach ($values as $value) {
$jsonURL = file_get_contents("https://www.googleapis.com/youtube/v3/videos?id={$value}&key={$api_key}&part=statistics";);
$json = json_decode($jsonURL);
$views = $json->{'items'}[0]->{'statistics'}->{'viewCount'};

$sum+= $views;

$emparray[$key] = $sum;

}

$output[] = $emparray;

}

//write to json file
$fp = fopen('test_json.json', 'w');
fwrite($fp, json_encode($output));
fclose($fp);


?>

Wat er nu in de JSON terecht komt is bijna goed, ware het niet dat de loop iedere keer vanaf het begin weer start:

[{"Aflevering 1":41354},{"Aflevering 1":41354,"Aflevering 2":37861},{"Aflevering 1":41354,"Aflevering 2":37861,"Aflevering 3":49733},{"Aflevering 1":41354,"Aflevering 2":37861,"Aflevering 3":49733,"Aflevering 4":27348},{"Aflevering 1":41354,"Aflevering 2":37861,"Aflevering 3":49733,"Aflevering 4":27348,"Aflevering 5":21565},{"Aflevering 1":41354,"Aflevering 2":37861,"Aflevering 3":49733,"Aflevering 4":27348,"Aflevering 5":21565,"Aflevering 6":19479},{"Aflevering 1":41354, etc.. etc..

Wat ik graag zou hebben is:

[{"Aflevering 1":41354},{"Aflevering 2":37861},{"Aflevering 3":49733},{"Aflevering 4":27348},{"Aflevering 5":21565}, etc.. etc..

Wat doe ik fout? Of zit ik helemaal in de verkeerde richting?
Regel 39 weghalen.
Regel 43 $output[$key] = $sum;
is het verstandig je api-key hier te publiceren?
Dank voor je snelle reactie, de output is dan toch anders dan ik moet hebben. Nu wordt het dan:

{"Aflevering 1":41354,"Aflevering 2":37861,"Aflevering 3":49736,"Aflevering 4":27348,"Aflevering 5":21565,"Aflevering 6":19479,"Aflevering 7":20968,"Aflevering 8":18168,"Aflevering 9":23160,"Aflevering 10":22828,"Aflevering 11":39349,"Aflevering 12":30629,"Aflevering 13":20866,"Aflevering 14":29831,"Aflevering 15":13288,"Aflevering 16":39708,"Aflevering 17":16684}

Terwijl ik moet hebben als JSON file:

[
{"Aflevering 1","23768364"},
{"Aflevering 2","73472732"},
{"Aflevering 3","34242349"}
]

Denk je dat hier ook een methode voor is?
Bart Verhoeven op 01/09/2015 16:34:27

Wat ik graag zou hebben is:

[{"Aflevering 1":41354},{"Aflevering 2":37861},{"Aflevering 3":49733},{"Aflevering 4":27348},{"Aflevering 5":21565}, etc.. etc..

Bart Verhoeven op 01/09/2015 17:08:39

Nu wordt het dan:

{"Aflevering 1":41354,"Aflevering 2":37861,"Aflevering 3":49736,"Aflevering 4":27348,"Aflevering 5":21565,"Aflevering 6":19479,"Aflevering 7":20968,"Aflevering 8":18168,"Aflevering 9":23160,"Aflevering 10":22828,"Aflevering 11":39349,"Aflevering 12":30629,"Aflevering 13":20866,"Aflevering 14":29831,"Aflevering 15":13288,"Aflevering 16":39708,"Aflevering 17":16684}


Dat was wat je vroeg.

Bart Verhoeven op 01/09/2015 17:08:39

Terwijl ik moet hebben als JSON file:

[
{"Aflevering 1","23768364"},
{"Aflevering 2","73472732"},
{"Aflevering 3","34242349"}
]


En hoe kom je aan die waarden?
is het niet eenvoudiger te overzien als je eerst in php de variabelen vult en pas als dat eruitziet zoals je bedoelde het om te zetten naar json?

Dat leest mi. een stuk eenvoudiger.
Ivo P op 01/09/2015 17:07:36

is het verstandig je api-key hier te publiceren?


Nee, idd, dank je voor je bericht..
Hoi Bart,

Wat ik niet begrijp is waarom je meerdere 'keys' hebt voor één aflevering. Bestaat één aflevering dan uit meerdere video's of zo?

Daarnaast: kun je ons één zo een JSON-string laten zien als voorbeeld zodat wij even mee kunnen kijken wat die api retourneert?

Reageren