Problemen met FOR en IF
Ik ben nog relatief onervaren op het gebied van PHP, dus bij voorbaat excuses als ik domme vragen stel. :)
Ik ben bezig met een scriptje voor het binnenhalen van files op wegen in Nederland vanuit een xml-feed.
Zie onder. Het werkt zoals ik wil.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?php
$url = "http://xml.fileindex.nl/";
$data = simplexml_load_file($url);
$aantalFiles = count($data->filedata->meldingen->melding);
$fileSamenvatting = $data->filedata->samenvatting;
$weg = $data->filedata->meldingen->melding->wegnr;
echo "Een overzicht van de actuele files in Nederland:";
echo "<br />";
echo $fileSamenvatting->tekst . "<br />";
for($i = 0; $i < $aantalFiles; $i++) {
$fileMelding = $data->filedata->meldingen->melding[$i];
echo "<font color='red'><mark> $fileMelding->wegnr </mark></font>";
echo " van " . $fileMelding->van . " richting " . $fileMelding->naar . "<br />";
echo round($fileMelding->afstand) . " km (HMP " . $fileMelding->hectostart . " → HMP " . $fileMelding->hectoeind . ")<br />";
echo "<br /><br />";
}
?>
$url = "http://xml.fileindex.nl/";
$data = simplexml_load_file($url);
$aantalFiles = count($data->filedata->meldingen->melding);
$fileSamenvatting = $data->filedata->samenvatting;
$weg = $data->filedata->meldingen->melding->wegnr;
echo "Een overzicht van de actuele files in Nederland:";
echo "<br />";
echo $fileSamenvatting->tekst . "<br />";
for($i = 0; $i < $aantalFiles; $i++) {
$fileMelding = $data->filedata->meldingen->melding[$i];
echo "<font color='red'><mark> $fileMelding->wegnr </mark></font>";
echo " van " . $fileMelding->van . " richting " . $fileMelding->naar . "<br />";
echo round($fileMelding->afstand) . " km (HMP " . $fileMelding->hectostart . " → HMP " . $fileMelding->hectoeind . ")<br />";
echo "<br /><br />";
}
?>
Nu probeerde ik middels onderstaande te filteren op bepaalde wegen in Nederland. Maar als output krijg ik hier alleen de eerst genoemde file op die weg. Als het er meerdere zijn, wordt dus alleen de eerste getoond.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<?php
$url = "http://xml.fileindex.nl/";
$data = simplexml_load_file($url);
$aantalFiles = count($data->filedata->meldingen->melding);
$fileSamenvatting = $data->filedata->samenvatting;
$weg = $data->filedata->meldingen->melding->wegnr;
echo "Een overzicht van de actuele files in Nederland:";
echo "<br />";
echo $fileSamenvatting->tekst . "<br />";
if ($weg = "A1") {
$fileMelding = $data->filedata->meldingen->melding;
echo "<font color='red'><mark> $fileMelding->wegnr </mark></font>";
echo " van " . $fileMelding->van . " richting " . $fileMelding->naar . "<br />";
echo round($fileMelding->afstand) . " km (HMP " . $fileMelding->hectostart . " → HMP " . $fileMelding->hectoeind . ")<br />";
echo "<br /><br />";
}
?>
Is het gebruik van IF hier überhaubt wel op zijn plaats? Of kan ik beter met FOR gaan proberen?
Nogmaals, het gaat hier om basiskennis, maar kan wel een zetje in de juiste richting gebruiken :) thanks!
- Ariën -:
Gelieve in het vervolg bij code de [code][/code]-tags gebruiken.
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Gewijzigd op 14/04/2017 14:58:13 door - Ariën -
Ik denk foreach nog makkelijker is, als je een array uit wilt lezen.
if ($weg = "A1") {
Bij een vergelijking gebruik je ==
if ($weg == "A1") {
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$url = "http://xml.fileindex.nl/";
$data = simplexml_load_file($url);
$opA2 = $data->xpath("//wegnr[. ='A2']/parent::*");
printf('<pre>%s</pre>', print_r($opA2, 1));
foreach($opA2 as $fileMelding) {
echo " van " . $fileMelding->van . " richting " . $fileMelding->naar . "<br />";
echo round($fileMelding->afstand) . " km (HMP " . $fileMelding->hectostart . " → HMP " . $fileMelding->hectoeind . ")<br />";
}
?>
$url = "http://xml.fileindex.nl/";
$data = simplexml_load_file($url);
$opA2 = $data->xpath("//wegnr[. ='A2']/parent::*");
printf('<pre>%s</pre>', print_r($opA2, 1));
foreach($opA2 as $fileMelding) {
echo " van " . $fileMelding->van . " richting " . $fileMelding->naar . "<br />";
echo round($fileMelding->afstand) . " km (HMP " . $fileMelding->hectostart . " → HMP " . $fileMelding->hectoeind . ")<br />";
}
?>
>> Nogmaals, het gaat hier om basiskennis, maar kan wel een zetje in de juiste richting gebruiken :) thanks!
Er bestaan (bijna) geen domme vragen. Hooguit domme antwoorden ;-)
Als je gewoon netjes je vraag stelt (en dat doe jij) zal je ook gewoon netjes geholpen worden, dus je hoeft je nergens voor te verontschuldigen.
Welkom op het forum.
Thanks :)