named & unnamed array keys

Status
Niet open voor verdere reacties.

bn2vs

Terugkerende gebruiker
Lid geworden
18 aug 2007
Berichten
1.705
Hey,

Ik heb een array met eenkele named keys erin:

$foo = array('een' => 1, 'twee' => 2, 'drie' => 3);

Die keys zijn nodig in een deel van mijn code, maar ik zou ook graag het eerste element kunnen opvragen. $foo[0] retourneert echter null. Doe ik iets verkeerd, of gaat dat gewoon niet? En hoe los ik het in dat geval op?

Cheers
BN
 
Dat lijkt inderdaad niet te kunnen. Wat je wel kunt doen is:

PHP:
$firstelement = reset ( $foo );

reset zet de pointer aan het begin van de array en retourneert de eerste waarde.
 
Dat $foo[0] niet werkt komt omdat je geen numerieke keys gebruikt.

Bij jouw is het eerste element $foo['een'], maar ik denk niet dat dit altijd zo is anders had je deze vraag niet gesteld ;)
 
Je kunt er trouwens ook wel een functie voor schrijven trouwens:

PHP:
function nthElement ( $n, $array ) {

  $q = 0;

  while ( $q < $n ) {
    
    next ( $array );
  
  }

  return current ( $array );

}

EDIT: ik heb het niet getest, maar ik denk wel dat het werkt. ;)
 
Ik zoek dus inderdaad een manier om het eerste element uit een array te halen waar de values names hebben.

@ ErikBooy007:
Thnx voor de functie, ik probeer hem zo dadelijk uit.

het zou echter leuker zijn om een native php functie/syantaxis te gebruiken. bestaat er zo echt geen?

Cheers
BN
 
Hey,

Heb iets gevonden wat me beter bevalt:

$keyz = array_keys($fooArray);
$eersteValue = $fooArray[$keyz[0]];


Dat werkt nice, maar zou het eerder zo willen zien:

$eersteValue = $fooArray[array_keys($fooArray)[0]];


Is dat niet mogelijk? Als ik het doe krijg ik een error, en vind het zo lame om er een apparte var voor te gaan maken :(

Cheers
BN
 
Uhm, als je persé $foo[0] wil gebruiken, waarom geef je de dan de array niet gewoon numerieke keys? Dit is een beetje onlogisch, wat je nu doet, en daarom is er geen native syntax voor :P
 
De named keys worden gebruikt door de rest van de code en zijn nodig. Bij het voorbeeld dat ik hier geef is het natuurlijk niet nodig, maar daarom is het ook maa een voorbeeld he :)
 
Je kunt dan het beste de functie gebruiken van ErikBooy007 denk ik, want dit gaat niet native ondersteund worden.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan