Archief - PHP: array

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

tikketim

Legacy Member
stel ik heb deze array :
PHP:
$test = array("a","b","c","d","e","f","g","h");

nu als er bijvoorbeeld iemand "b" ingeeft zou ik eigelijk de letter voor en na de "b" uit die array moeten kunnen halen
"a" en "c" dus , hoe doe ik dat ?:s

ik weet dat elke key automatisch een nr krijgt in dit geval van 0 naar 7 dus , kan ik zo de vorige en volgende eruit halen ?

Rvl

Legacy Member
Code:
<?php $test = array("a","b","c","d","e","f","g","h"); 
$current= array_search("b",$test);
$previous = $test[current - 1];
$next = $test[$current + 1];
?>
edit: wel nog de nodige controle doen of key groter of gelijk is aan nul en kleiner of gelijk is aan max. code werkt ook enkel als keys aaneensluiten

killgore

Legacy Member
PHP:
<?php $test = array("a","b","c","d","e","f","g","h"); 
$keyarray=array_flip($test);
$previous= $test[$keyarray["b"]-1];
$next= $test[$keyarray["b"]+1];
?>
Het argument van range van indices blijft wel gelden.

Rvl

Legacy Member
idd beter, hetgeen van killgore. Minder code en zoals hij zegt blijft dit script wel altijd werken

killgore

Legacy Member
Rvl zei:
idd beter, hetgeen van killgore. Minder code en zoals hij zegt blijft dit script wel altijd werken
nee, juist niet, je moet nog altijd rekening houden met die indices die out-of-range kunnen gaan :).

Het is gewoon, bij herhaling (al dan niet loop) is het mijne ietsje simpeler te coden & ook sneller, niet algemeen beter of zo hoor ;). Ma ik wou het gewoon posten :p.

passero

Legacy Member
Kan je dan niet beter met een linked list werken? Die kent automatisch zijn volgend,vorig object :)

IK weet niet of die reeds in PHP zitten, anders kan je zo een list makkelijk zelf schrijven.

Rvl

Legacy Member
php heeft dit niet, enkel gewone array (ofwel ben ik van de oude school)

killgore

Legacy Member
Je kan dat zelf coden, maar de moeite die het neemt weegt (imho) niet op tegen het resultaat en omdat je geen operator-overloading hebt is het ook niet zo simpel te gebruiken (je zal dan bv met $listItem->get("key"); ipv $listItem["key"] werken).
Dan is het vreselijk veel simpeler om Rvl zijn code (die is hier dan weer beter voor) in een functie te steken :).
Je kan btw ook loopen via de current, next en previous functies, waardoor je dus vrij simpel aan je next en previous geraakt. Maar dat is dus enkel handig tijdens het loopen zelf, niet echt als je random access wilt.

tikketim

Legacy Member
thx voor de oplossing , alle 2 de manieren werken perfect voor mij
jullie mogen gerust nog door discussieren over andere manieren :p
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan