2009-05-04 20 views
2

Antwort ist nicht $ Array [0];Verweis auf Element in einem PHP-Array

Mein Array ist wie folgt aufgebaut

$array = array(); 
$array[7] = 37; 
$array[19] = 98; 
$array[42] = 22; 
$array[68] = 14; 

ich das Array sortieren und versuchen, das höchstmögliche Spiel heraus nach der Sortierung zu erhalten. Also in diesem Fall $ array [19] = 98; Ich brauche nur den Wert 98 zurück und es wird immer in der ersten Position des Arrays sein. Ich kann nicht mit $ array [0] referenzieren, da der Schlüssel 0 nicht existiert. Geschwindigkeitsbeschränkungen bedeuten, dass ich das Array nicht durchlaufen kann, um die höchste Übereinstimmung zu finden.

Es gibt auch eine bessere Lösung sein als

foreach ($array as $value) 
{ 
    echo $value; 
    break; 
} 

Antwort

4
$keys = array_keys($array); 
echo $array[$keys[0]]; 

Oder Sie könnten die current() Funktion:

reset($array); 
$value = current($array); 
+0

+1 für Strom. – cgp

+1

Vielleicht möchten Sie reset() im Array vor current() aufrufen, um sicherzustellen, dass Sie das erste Element verwenden. – Powerlord

+0

Danke. Der Strom funktioniert perfekt. Es gibt andere Einschränkungen, die mich daran hindern, das Array oder sogar die Indizes zu kopieren. Geschwindigkeit ist auch in diesem Fall eine große. – Ryaner

0

Wenn Sie es zu sortier, können Sie Ihre eigene Sortierroutine angeben können und haben es den höchsten Wert auswählen während Sie es zu sortieren.

+0

Die eigentliche Sortierung erfolgt durch einen anderen Teil des Systems. Wirklich eine Blackbox, die ich nicht kontrollieren kann. – Ryaner

+0

Ah ja, dann ist die aktuelle() Option die _right_ Antwort. – cgp

2

Sie können immer tun;

$array = array_values($array); 

Und jetzt $ array [0] wird die richtige Antwort sein.

3

Sie wollen den ersten Schlüssel im Array, wenn ich Ihre Frage richtig verstanden:

$firstValue = reset($array); 
$firstKey = key($array); 
0
$array = array_values($array); 
echo $array[0]; 
1

Wenn Sie will das erste Element, das Sie verwenden können array_shift, wird dies nichts Schleife und nur den Wert zurückgeben.

In Ihrem Beispiel ist es jedoch nicht das erste Element, also scheint es eine Diskrepanz in Ihrem Beispiel/Frage, oder ein Fehler in meinem Verständnis davon zu geben.

+0

array_shift() ist besser als current(), da es nicht vom internen Array-Zeiger abhängt. Wenn Sie next ($ arr) und dann current ($ arr) verwenden, wird ein anderer Wert zurückgegeben. Auch wenn dies nicht der Fall ist, ist es weniger elegant als array_shift(), das _always_ immer das erste Element zurückgibt. –

+0

Array_shift wird das Array verkürzen. In diesem Fall brauche ich nur den zu bearbeitenden Wert, bevor ich das Array in einem anderen Abschnitt des Systems weiterverarbeite. – Ryaner

+0

Ok, gültiger Punkt. :) –

Verwandte Themen