[PHP][JSON] Wat gebeurt hier?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

Topicstarter
Ik wil van een JSON object uit de nieuwe API van Trakt het een en ander ophalen.
Dit ophalen werkt, het wordt ook netjes weggeschreven naar een file met de JSON output erin.
Die JSON output, wil ik echter ook in een ander formaat hebben, voor weer een ander script en ik wil daarom wat lagen uit de JSON halen, met name de datum.

Ik heb daarvoor een eigen teller meelopen en daar gebeurd iets raars.
PHP:
1
2
3
4
5
6
7
8
9
10
11
<?php
foreach($calendar as $days)
{
    $i = 1;
    foreach($days as $ep)
    {
        $json[$i] = $ep;
        $i++;
    }
}
?>
Hiermee zou ik als het goed is moeten krijgen wat ik wil, dat gebeurd ook. Echter, doe ik het op bovenstaande manier, dan komen er uiteindelijk maar 7 episodes. Doe ik het op de volgende manier
PHP:
1
2
3
4
5
6
7
8
9
10
11
<?php
foreach($calendar as $days)
{
    $i = 1;
    foreach($days as $ep)
    {
        $json[] = $ep;
        $i++;
    }
}
?>
Dan werkt het wél. Nu is mijn vraag, hoe het kan dat die meelopende teller in het eerste geval niet verder komt dan 7 en in het laatste geval wél alles doorlopen? De JSON die ik hiervoor gebruik is te vinden op http://pastebin.com/vX9fkV5F.

Let goed op het verschil in regel 7!

EDIT:
Heb het al gevonden, de declaratie van $i stond te laag, die omhoog gezet, tot boven de eerste foreach-loop, het werkt nu. :)

[ Voor 7% gewijzigd door CH4OS op 08-02-2015 20:51 ]


Acties:
  • 0 Henk 'm!

  • 4Real
  • Registratie: Juni 2001
  • Laatst online: 14-09-2024
Waarom houdt je uberhaupt een teller bij? De regel:
PHP:
1
$json[] = $ep;

Voeg de episode toe aan de json array.

Dus dit is al voldoende:
PHP:
1
2
3
foreach($calendar as $days)
    foreach($days as $ep)
        $json[] = $ep;


Zo heb je het ook lekker compact :)

Acties:
  • 0 Henk 'm!

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

Topicstarter
4Real schreef op maandag 09 februari 2015 @ 08:00:
Waarom houdt je uberhaupt een teller bij?
Omdat als ik automatisch mee laat tellen, de teller op 0 begint en ik dat in dit geval niet wil hebben, ik zou dan namelijk later resultaat 0 niet op kunnen halen. Omdat 0 dan gelijk is als false.

[ Voor 54% gewijzigd door CH4OS op 09-02-2015 17:59 ]


Acties:
  • 0 Henk 'm!

  • moijamie
  • Registratie: Augustus 2013
  • Laatst online: 11-09 14:08
Als ik het goed begrijp wil je dat je array bij 1 begint?

const { signature } = await fetchProfile()


Acties:
  • 0 Henk 'm!

  • Reinier
  • Registratie: Februari 2000
  • Nu online

Reinier

\o/

Je vult elke keer de eerste paar elementen van $json opnieuw en overschrijft ze dus in plaats van dat je ze aan de array toevoegt. Die $i = 1 moet buiten de loop.

Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Reinier schreef op maandag 09 februari 2015 @ 18:04:
Je vult elke keer de eerste paar elementen van $json opnieuw en overschrijft ze dus in plaats van dat je ze aan de array toevoegt. Die $i = 1 moet buiten de loop.
QFT

Standaard debugwerk imo.

Acties:
  • 0 Henk 'm!

  • Merethil
  • Registratie: December 2008
  • Laatst online: 10:43
Cartman! schreef op maandag 09 februari 2015 @ 18:28:
[...]

QFT

Standaard debugwerk imo.
En als je had gelezen wat er in zijn startpost staat zag je dat hij het allang heeft opgelost, door idd de variabele te verplaatsen.

Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Merethil schreef op maandag 09 februari 2015 @ 18:52:
[...]


En als je had gelezen wat er in zijn startpost staat zag je dat hij het allang heeft opgelost, door idd de variabele te verplaatsen.
Als je na 3 minuten alsnog de oplossing vindt heb je denk ik te snel het topic geopend.

Acties:
  • 0 Henk 'm!

  • Merethil
  • Registratie: December 2008
  • Laatst online: 10:43
Cartman! schreef op maandag 09 februari 2015 @ 18:55:
[...]

Als je na 3 minuten alsnog de oplossing vindt heb je denk ik te snel het topic geopend.
Dat zou kunnen, maar dat is totaal niet wat je net postte. Hij heeft netjes de oplossing alsnog gepost, wees blij, hij is een van de enige die dat ook echt doet. Te snel gevraagd of niet, hij doet het beter dan menigeen andere tweaker.

Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Merethil schreef op maandag 09 februari 2015 @ 19:06:
[...]
Dat zou kunnen, maar dat is totaal niet wat je net postte.
Standaard debugwerk had het topic voorkomen, lijkt me prima aansluiten op elkaar.
Hij heeft netjes de oplossing alsnog gepost, wees blij, hij is een van de enige die dat ook echt doet. Te snel gevraagd of niet, hij doet het beter dan menigeen andere tweaker.
Jep, dat is heel mooi maar in praktijk denk i niet dat iemand met een soortgelijk probleem dit topic gaat terugvinden.

Acties:
  • 0 Henk 'm!

  • Merethil
  • Registratie: December 2008
  • Laatst online: 10:43
Cartman! schreef op maandag 09 februari 2015 @ 19:10:
[...]

Standaard debugwerk had het topic voorkomen, lijkt me prima aansluiten op elkaar.

[...]

Jep, dat is heel mooi maar in praktijk denk i niet dat iemand met een soortgelijk probleem dit topic gaat terugvinden.
En een iets uitgebreider antwoord kan mensen helpen te snappen hoe ze er makkelijker achter waren gekomen. De een geeft direct het antwoord, de andere snauwt alleen dat het standaard debugwerk is, gezellig ;)

Goed, het is een basisvraag, maar er zullen vast mensen in dit topic langskomen en als zij nog geen woord geprogrammeerd hebben en toevallig net willen beginnen is het topic iig volledig met vraag en antwoord.
Pagina: 1