Hallo,
Ik heb een array als volgt:
<? $prijzen = array();
$prijzen['09:00:00'] = 100;
$prijzen['09:01:00'] = 102;
$prijzen['09:02:00'] = 97;
$prijzen['09:03:00'] = 94;
$prijzen['09:04:00'] = 104; ?>
Nu probeer ik een lus te maken waarin ik de resultaten krijg van het eerste element (of hoe noem je een record in een array?) die hoger is dan X OF lager is dan Y. De volgende code heb ik nu geschreven:
<? $hoger_dan = 101;
$lager_dan = 95;
foreach($prijzen as $tijd => $prijs){
if ($prijs > $hoger_dan OR $prijs < $lager_dan){
echo $tijd." en ".$prijs."<br>";
}
} ?>
Dit geeft dus het volgende als resultaat:
09:01:00 en 102
09:03:00 en 94
09:04:00 en 104
Daaruit kan ik aflezen dat de bovenste (dus de eerste) het antwoord is. Op zich bereik ik dus wel wat ik wil. Ik zou echter graag hebben dat de lus maar één antwoord geeft; namelijk het eerste. Het liefst zou ik daarnaast ook nog hebben dat de lus onmiddellijk stopt wanneer hij het eerste record heeft gevonden wat voldoet aan de voorwaarden.
Om het nog iets duidelijker te maken; in sql zou ik dus iets zeggen als
<? SELECT tijd
FROM array
WHERE prijs > $hoger_dan
OR prijs < $lager_dan
ORDER BY tijd ASC
LIMIT 1 ?>
Is er een simpele manier om dit met een array te doen? Misschien moet het helemaal niet met een foreach loop, maar ik zou niet zo goed weten waarmee dan wel. Iemand anders toevallige wel? Alle tips zijn welkom!
1.735 views