Buienradar [PHP]

Pagina: 1
Acties:

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Beste Tweakers,

Ik probeer de data te krijgen die hoger zijn dan 000 en dan ook nog tijd los van de verwachten regen.
Ik had wel wat geprobeerd maar werkt niet heel geweldig.
http://gadgets.buienradar.nl/data/raintext/?lat=51&lon=5
Is dit op een logische / makkelijke manier te doen?

Groeten,
Joris

Relevante software en hardware die ik gebruik
PHPStorm

Wat ik al gevonden of geprobeerd heb
Foreach in een foreach maar returned alleen laatste.

Beste antwoord (via Verwijderd op 30-07-2017 23:55)


  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

Ja, je doorloopt de $rains array, maar schrijft de regel dus weg naar een variabele, waarbij de vorige waarde dan dus overschreven wordt en niet naar een nieuw item in de array, zoals ik in mijn vorige post reeds aangaf. ;)
Kijk dus goed naar de verschillen die ik er in heb zitten, moet lukken. :)

Kleine hint, kijk naar de [] binnen het If-statement.

[ Voor 55% gewijzigd door CH4OS op 31-07-2017 13:01 ]

Alle reacties


Acties:
  • 0 Henk 'm!

  • Jboy1991
  • Registratie: September 2012
  • Nu online
Verwijderd schreef op zondag 30 juli 2017 @ 23:33:

Wat ik al gevonden of geprobeerd heb
Foreach in een foreach maar returned alleen laatste.
Misschien toch handig om de code hoe jij het probeerde hier te plaatsen. Via een for zal ik het ook gedaan hebben namelijk

Acties:
  • 0 Henk 'm!

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

Kun je wat specifieker zijn dan dat je "wat" hebt geprobeerd? :) Er wordt (ook in dit subforum) wel wat meer inzet verwacht. Geef bijvoorbeeld eens wat voorbeeldcode wat je had geprobeerd. Kun je ook aangeven waarom dat niet heel goed werkte? :) Wellicht ben je dus bijna bij de oplossing die je zoekt, maar mis je net een klein stukje.

Nu heb ik de code niet gezien, maar ik vermoed (jaja, assumption is the mother...) dat je de regels doorloopt en dan een variabele zet, waardoor het lijkt dat je alleen de laatste krijgt, want de laatste is immers dan degene die de variabele als laatste zet. Als je de resultaten in een array zet, heb je daar geen last van.
Je kunt dan simpelweg zo doen, bijvoorbeeld:
PHP:
1
2
3
4
5
6
$results = [];
foreach($rows as $row) { // Elke rij/regel doorlopen
    if(strpos(000, $row)) { // De match die je wilt maken
        $results[] = $row; // De match opslaan in de $results array als een nieuwe entry in de array
    }
]
Op die manier worden de uitkomsten netjes inde $results array opgeslagen. :) Hierbij is $rows dan overigens de uitkomst van de pagina, maar dan exploded op newline characters (die kan verschillen, afhankelijk van de server die de uitkomst geeft), zodat je elke regel apart kan doorlopen. Je kunt dan dus in feite met 1 foreach af. :)

[ Voor 18% gewijzigd door CH4OS op 30-07-2017 23:48 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
CH40S schreef op zondag 30 juli 2017 @ 23:43:
Kun je wat specifieker zijn dan dat je "wat" hebt geprobeerd? :) Er wordt (ook in dit subforum) wel wat meer inzet verwacht. Geef bijvoorbeeld eens wat voorbeeldcode wat je had geprobeerd. Kun je ook aangeven waarom dat niet heel goed werkte? :) Wellicht ben je dus bijna bij de oplossing die je zoekt, maar mis je net een klein stukje.

Nu heb ik de code niet gezien, maar ik vermoed (jaja, assumption is the mother...) dat je de regels doorloopt en dan een variabele zet, waardoor het lijkt dat je alleen de laatste krijgt, want de laatste is immers dan degene die de variabele als laatste zet. Als je de resultaten in een array zet, heb je daar geen last van.
Je kunt dan simpelweg zo doen, bijvoorbeeld:
PHP:
1
2
3
4
5
6
$results = [];
foreach($rows as $row) { // Elke rij/regel doorlopen
    if(strpos(000, $row)) { // De match die je wilt maken
        $results[] = $row; // De match opslaan in de $results array als een nieuwe entry in de array
    }
]
Op die manier worden de uitkomsten netjes inde $results array opgeslagen. :)
Allereerst bedankt voor je antwoord :D

PHP:
1
2
3
4
5
6
7
8
9
10
<?php
ini_set('display_errors',1);

$rains=file_get_contents('http://gadgets.buienradar.nl/data/raintext/?lat=51&lon=5');
$rains=str_split($rains,11);
foreach($rains as $rain)
{
 $output = explode("|", $rain);
}
print_r($output);


dit is hoe ik het nu heb :>

Heel erg bedankt al :D maar value is niet altijd 000 omdat als het regent hij hoger is dan 000 en ik wil juist alles hoger dan 000 opslaan.

En voor de mensen die het zich afvragen nee ik ben geen php wonder.

[ Voor 9% gewijzigd door Verwijderd op 30-07-2017 23:54 ]


Acties:
  • Beste antwoord
  • 0 Henk 'm!

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

Ja, je doorloopt de $rains array, maar schrijft de regel dus weg naar een variabele, waarbij de vorige waarde dan dus overschreven wordt en niet naar een nieuw item in de array, zoals ik in mijn vorige post reeds aangaf. ;)
Kijk dus goed naar de verschillen die ik er in heb zitten, moet lukken. :)

Kleine hint, kijk naar de [] binnen het If-statement.

[ Voor 55% gewijzigd door CH4OS op 31-07-2017 13:01 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
CH40S schreef op zondag 30 juli 2017 @ 23:53:
Ja, je doorloopt de $rains array, maar schrijft de regel dus weg naar een variabele, waaarbij de vorige waarde dan dus overschreven wordt en niet naar een nieuwe array, zoals ik in mijn vorige post reeds aangaf. ;)
Kijk dus goed naar de verschillen die ik er in heb zitten, moet lukken. :)
Thanks voor de snelle fix! :D

Acties:
  • 0 Henk 'm!

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

An sich zou ik het wel wat uitbreiden, zodat je enkel de regels in de array hebt die je er ook daadwerkelijk wilt hebben. Na de explode dus checken of $output[0] gelijk is aan 000. Als het dan true is, dan pas de $rain variabele toevoegen als nieuwe entry aan array $output. ;)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
CH40S schreef op zondag 30 juli 2017 @ 23:57:
An sich zou ik het wel wat uitbreiden, zodat je enkel de regels in de array hebt die je er ook daadwerkelijk wil hebben. Na de explode dus checken of $output\[0] gelijk is aan 000. Als het dan true is, dan pas de $rain variabele toevoegen als nieuwe entry aan $output. ;)
Dat had ik inderdaad zelf ook al bedacht maar nooit gedacht aan [] 8)7
Pagina: 1