Ik weet niet hoe ik dit het best omschrijf maar ik heb een functie om een dropdown menu te maken. De options worden gehaald uit een array maar de array kan keys en values hebben of alleen values. Als de array uit alleen values bestaat dan moet de key gelijk zijn aan de value en anders moet de key gewoon uit de array halen. Ik heb wel de functies: array_key_exists & array_keys() gevonden maar met de eerste kijk je of de key die je zoekt bestaat en met de 2de krijg ik alle keys terug. Het is beide niet wat ik zoek.
dit is mijn fout die arrayHasKeys(); Ik had die functie snel geschreven tot ik besefte dat die onnodig was.
waarom is_integer?
array('stijn' , 'ibrahim'); => hij zet automatisch integer keys neer. Als je zelf keys gaat plaatsen zal dat 90% zo zijn:
array( 'naam' => array('stijn' , 'ibrahim') );
Ja ik had ook aan foreach gedacht maar ik wist dus niet hoe ik dan ging kijken of er wel een key of niet aanwezig was. Maar in jou voorbeeld is de key dus altijd een integer? Denk dat het zo wel lukt. Bedankt
Een array heeft altijd een key/sleutel. Als je geen zelf-opgegeven key geeft (meestal string), dan is het altijd een integer (tellend beginnend bij 0).
At hieronder, ik begrijp je vraag niet helemaal.
De operator === kijkt ook of de data type gelijk is (dit geval boolean).
Of als je het principe niet begrijpt waarom hij kijkt of het een integer is, hij kijkt of er zelf een key is opgegeven, zoja; gebruik die zonee, gebruik dan de value.
@random: siliecom14 wijst me daar veel op. Wanneer je die '=== true' niet opgeeft de conditie altijd vanuit gaat dat hij true moet zijn. Een voorbeeld voor de duidelijk:
Nee hoor, echo kan meerdere argumenten (mits je geen haakjes gebruikt, naar mijn mening ook nooit doen bij een taal constructie). Gebruik je hier de string concat (.) voor dan voert hij eerst de var_dump uit en dan krijg je <pre></pre> erachter aan, je wilt juist die var_dump() tussen de <pre> en </pre>.
;-)
In dit geval is trouwens === overbodig (== ook, maar staat wel netter), is_integer retourneert altijd een boolean, maar ieder zijn eigen codeer stijl. Zelf doe ik het ook, vind het overzichtelijker en begrijpelijker.
Een array heeft altijd een key/sleutel. Als je geen zelf-opgegeven key geeft (meestal string), dan is het altijd een integer (tellend beginnend bij 0).
Dat is het probleem/punt helemaal niet...
Als mijn array zo is: array('januari', 'februari', 'maart'); dan moet de option zo gevuld zijn:
<option value='". $value ."'>'. $value .'</option>
Maar is de array zo: array(1=> 'januari', 'februari', 'maart'); dan moet de option zo gevuld zijn:
<option value='". $key ."'>'. $value .'</option>
Maar nu verdwijnt in iedergeval de option.. Alle values staan achter elkaar maar niet binnen de option tag