Ik hoop dat je wat aan mijn info heb gehad zo niet laat het me dan weten. Want dan heb ik je vraag aardig verkeerd begrepen als dat het geval is laat dan even duidelijker weten wat je precies bedoeld.
Dat is de ternaire operator (http://www.php.net/manual/nl/language.expressions.php).
Waarom wil je overigens de key van 'mei' weten? Je array is statisch, de maanden veranderen niet van key (oftewel hard coded). Dus dan weet je toch altijd dat mei de key 4 heeft, array begint tellen met 0. Wil je toch maken dat je mei via de key 5 kunt aanroepen:
Ik denk dat hij die key wil weten omdat hij een kalender maakt.
Iemand zoekt bijvoorbeeld naar 'mei', en dan moet hij voor zn database bijvoorbeeld de index daarvan weten. Die array doorzoeken is veel gemakkelijker dan 1if en 11elseif's neer te zetten.
@roy:
wat je misschien kunt doen, is je array omdraaien en dan mbv array_key_exists de waarde ophalen.
Ik denk dat hij die key wil weten omdat hij een kalender maakt.
Iemand zoekt bijvoorbeeld naar 'mei', en dan moet hij voor zn database bijvoorbeeld de index daarvan weten. Die array doorzoeken is veel gemakkelijker dan 1if en 11elseif's neer te zetten.
Array verandert niet, Mei blijft de key 4 houden. Dan weet je toch dat je met key 4 te maken hebt. Maar wil je toch de key weten, dan kun je inderdaad het beste array_search gebruiken.
@stijn1989
Die functie kan je er inderdaad voor gebruiken, maar aangezien het een statische array is, kan hij de array net zogoed andersom typen
@random
maar daarmee los je het probleem niet op, dat je weet dat mei array key 4 heeft.. Mei was bij hem een voorbeeld, hij wil dus weten welke key bij welke maand hoord. Daar heb je dus inderdaad array_search voor..
Etc, blijft dan toch hetzelfde in die array $maanden. Je zegt zelf ook al het is een statische array (hard coded) dus dan veranderen die keys niet. Je weet dat een array bij 0 begint te tellen, je weet dat januari de eerste element in je array is: key 0, value januari.
Nou dan is 'mei' 5, dat weet je zelf dan ook wel als je je array zo opbouwt omdat het hard coded is. Als je vanuit gaat van andere codes die mensen (stijn1989) post:
Heeft mei wel de key 4. Of het nou de key 4 of 5 heeft het blijft hard coded en het is niet variable/varierend, nogmaals het is hardcoded.
Als je eenmaal zo'n array hebt opgebouwd, dus zonder zelf keys op te geven, dan weet je toch dat januari in die array de key 0 heeft en hoef je toch niet te gaan 'zoeken' wat de key bij januari is..
Maar de invoer (de maand) is variabel en dan moet je dus de array doorlopen om te kijken welk maandnummer er bij die maand hoort.
Anders moet je daar een if met 11elseif-s voor maken, dat probeer ik duidelijk te maken. Voorbeeld (?maand=september):
Ja, maar jij gebruikt geen array_search wat anderen wel steeds aanraadde en dat probeerde ik steeds uit te leggen. Wat jij doet is precies hetzelfde wat ik bedoelde, alleen dan de keys en values omgedraait. Persoonlijk zou ik het zo doen:
Het is jou wel intuitief duidelijk welk cijfer (index) bij welke naam hoort, maar als je het programma hier mee wilt laten werken zul je het ook aan het programma moeten uitleggen.
Meer in het algemeen:
Gegeven een array, en gegeven een bepaalde value, wil je weten wat de bijbehorende key is.
Meerdere manieren mogelijk:
- door te bepalen of de value bestaat: in_array
- door te bepalen of de key bestaat: array_key_exists
In beide gevallen heb je een lus nodig die wordt afgebroken op het moment dat je de value (en dus de key) vindt.
- array_flip, en kijken of $flipped_array[$value] bestaat, de waarde op deze positie is dan de key
voorwaarde hiervoor is wel dat alle values in het oorspronkelijke array uniek zijn
- array_search
Ja precies, dat is in het algemeen. Maar hier hoef je toch niet te kijken/zoeken of 'Mei' (waarde) in je array bestaat, gezien je het er zelf hard coded heb neergezet en het niet uit een of andere bron komt en het elke waarde kan bevatten. Mijn posts beperken zich tot dit 'probleem' en niet algemeen gebruik van arrays.
Ik bedoelde inderdaad `To each his own`
Maargoed, als het probleem van de TS maar is opgelost, dan houd ik op en blijven we allemaal bij onze standpunt.