Eerste array-key van element hoger dan X
Ik heb een array als volgt:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<? $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; ?>
$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:
Code (php)
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
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<? SELECT tijd
FROM array
WHERE prijs > $hoger_dan
OR prijs < $lager_dan
ORDER BY tijd ASC
LIMIT 1 ?>
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!
Gewijzigd op 24/11/2011 16:41:37 door Peter Sanders
Ik heb het als volgt opgelost:
Code (php)
Dank voor de snelle oplossing!
EDIT:
Ik zie nu dat die tweede if-natuurlijk helemaal niet nodig is. Voor mensen die dit later dus nog lezen, hierbij de meer logische versie:
Code (php)
@ Vincent hieronder. Ik zie nu ook dat jij dit suggereerde. Dank nog voor je suggestie, maar met trots kan ik zeggen dat ik dit zelf had bedacht.. :D
Gewijzigd op 24/11/2011 20:37:47 door Peter Sanders
waarom stop je de break niet bij de eerste if in?