Ich möchte das erste Element dieses Arrays erhalten. Erwartetes Ergebnis: Schnurapple
Eine Anforderung: es kann nicht mit der Weitergabe von Verweisen durchgeführt werdenso array_shift ist keine gute Lösung.
Wie kann ich das machen?
Was meinst du, kann nicht durch Referenz erfolgen?
– cjk
17. Dezember 2009 um 12:34 Uhr
Die Funktion sollte nicht mit funktionieren &$array als Parameter.
– hsz
17. Dezember 2009 um 12:41 Uhr
Ich vermute, dass Sie “wirklich” mit “kann nicht per Referenz ausgeführt werden” meinen, dass Ihr Array dynamisch von einer Datenbank zurückgegeben wird und Sie das Array nicht an eine Variable übergeben möchten, bevor Sie das erste Element nehmen davon. Wenn ich Recht habe, ist die überwiegende Mehrheit aller Lösungen, die Ihnen unten zur Verfügung gestellt werden (einschließlich der akzeptierten Antwort), unzureichend.
– Wagen vor dem Pferd
23. Oktober 2012 um 20:16 Uhr
Müssen Sie es nur abrufen oder abrufen und aus dem vorhandenen Array entfernen?
zurücksetzen() spult zurück Arrays interner Zeiger auf das erste Element und gibt den Wert des ersten Array-Elements zurück, oder FALSE, wenn das Array leer ist.
Obwohl es als Referenz an reset übergeben wird, wird das ursprüngliche Array nicht geändert. Ich vermute, das ist der Grund, warum hsz es nicht als Referenz weitergeben möchte.
– Dennis Jamin
4. Oktober 2013 um 11:22 Uhr
Der Iterator des Arrays wird geändert. Wenn Sie dies in a tun foreach Mit dem Betreff-Array vermasseln Sie es.
– Zenexer
13. November 2013 um 6:11 Uhr
@Zenexer das ist (normalerweise) nicht immer wahr. Üblicherweise in der Praxis foreach kopiert das Array, das es durchschleift.
– Lukas Cousins
6. Juni 2015 um 11:32 Uhr
@Angger nach dem Zurücksetzen können Sie anrufen key($arr) und Sie erhalten ‘4’ (zur Antwort hinzugefügt)
– Lepe
19. April 2017 um 3:03 Uhr
Weder @Zenexer noch Luke Cousins haben Recht: 1) foreach verwendet keinen internen Zeiger eines Arrays – stattdessen erstellt es einen eigenen Zeiger. Es ist einfach, den Aufruf von reset innerhalb von foreach zu überprüfen – die Schleife folgt ihrem Weg ohne Auswirkung von reset(). 2) Nein, foreach erstellt KEINE Kopie eines Arrays!!! Es erstellt nur seinen eigenen Zeiger (nicht einmal eine Kopie eines vorhandenen – es ist auch einfach zu überprüfen, indem es aufruft next() vor jedem).
– dmikam
1. Juni 2018 um 8:01 Uhr
Ich habe es nicht wirklich getestet, aber es scheint, dass dieser Ansatz der effizienteste wäre.
– Maurer81
27. August 2012 um 15:23 Uhr
Das einzige Problem ist die Frage nach dem Wert, nicht nach dem Schlüssel. Daher sollte current($array) anstelle von key($array) verwendet werden.
– zmonteca
13. September 2012 um 18:40 Uhr
@zmonteca $first_value = reset($array); Hier erhalten Sie den Wert, die Funktion reset () spult den internen Zeiger des Arrays zurück und gibt das erste Element zurück.
– S3Mi
3. Oktober 2012 um 13:16 Uhr
die beste antwort! suchte nach key()-Äquivalenz, um den ersten Wert zu erhalten. Das hilft!
– Alain Tiemblo
19. Oktober 2012 um 10:06 Uhr
Was ist, wenn das Array leer ist? reset() wird zurückkehren falsewas zu Fehlern führen kann, wenn Sie erwarten, dass das Array enthält bool Werte.
Jedes Array hat einen internen Zeiger auf sein “aktuelles” Element, das auf das erste in das Array eingefügte Element initialisiert wird.
Es funktioniert also, bis Sie den Array-Zeiger neu positioniert haben, und ansonsten müssen Sie verwenden reset() Dadurch wird das Array zurückgespult und das erste Element des Arrays zurückgegeben
reset() spult den internen Zeiger des Arrays auf das erste Element zurück und gibt den Wert des ersten Array-Elements zurück.
Beispiele von current() und reset()
$array = array('step one', 'step two', 'step three', 'step four');
// by default, the pointer is on the first element
echo current($array) . "<br />\n"; // "step one"
//Forward the array pointer and then reset it
// skip two steps
next($array);
next($array);
echo current($array) . "<br />\n"; // "step three"
// reset pointer, start again on step one
echo reset($array) . "<br />\n"; // "step one"
Ich weiß nicht, warum dies nicht die akzeptierte Antwort war, da es die Frage ziemlich einfach und genau beantwortet.
– Rückfall
30. Dezember 2014 um 21:31 Uhr
current($array) funktioniert nur, wenn der Array-Zeiger “aktuell” auf das erste Element zeigt, andernfalls reset($array) erforderlich wäre.
– Jon
15. Januar 2015 um 23:23 Uhr
Es scheint current() erfordert keine Referenz mehr, obwohl die PHP-Dokumentation dies nicht widerspiegelt. Daher denke ich, dass dies die beste Lösung geworden ist.
– Ryan
18. Februar 2016 um 0:31 Uhr
@Ryan stimmte zu, aber diese Lösung wurde 2 Jahre vor 2014 in dieser anderen Antwort desselben Threads gegeben … Seltsam, dass dieser unvollständige Satz mehr positive Stimmen erhielt.
– CPHPython
4. Juli 2018 um 13:23 Uhr
Was ist, wenn das Array leer ist? reset() und current() wird zurückkehren falsewas zu Fehlern führen kann, wenn Sie erwarten, dass das Array enthält bool Werte.
Wenn Sie die aktuelle Zeigerposition nicht verlieren möchten, erstellen Sie einfach einen Alias für das Array.
Ich weiß nicht, warum dies nicht die akzeptierte Antwort war, da es die Frage ziemlich einfach und genau beantwortet.
– Rückfall
30. Dezember 2014 um 21:31 Uhr
current($array) funktioniert nur, wenn der Array-Zeiger “aktuell” auf das erste Element zeigt, andernfalls reset($array) erforderlich wäre.
– Jon
15. Januar 2015 um 23:23 Uhr
Es scheint current() erfordert keine Referenz mehr, obwohl die PHP-Dokumentation dies nicht widerspiegelt. Daher denke ich, dass dies die beste Lösung geworden ist.
– Ryan
18. Februar 2016 um 0:31 Uhr
@Ryan stimmte zu, aber diese Lösung wurde 2 Jahre vor 2014 in dieser anderen Antwort desselben Threads gegeben … Seltsam, dass dieser unvollständige Satz mehr positive Stimmen erhielt.
– CPHPython
4. Juli 2018 um 13:23 Uhr
Was ist, wenn das Array leer ist? reset() und current() wird zurückkehren falsewas zu Fehlern führen kann, wenn Sie erwarten, dass das Array enthält bool Werte.
– Jacob
26. Oktober 2021 um 19:03 Uhr
PHP7.3 zwei Funktionen hinzugefügt, um den ersten und den letzten Schlüssel eines Arrays zu erhalten direkt ohne Änderung des ursprünglichen Arrays und ohne temporäre Objekte zu erstellen:
Was meinst du, kann nicht durch Referenz erfolgen?
– cjk
17. Dezember 2009 um 12:34 Uhr
Die Funktion sollte nicht mit funktionieren
&$array
als Parameter.– hsz
17. Dezember 2009 um 12:41 Uhr
Ich vermute, dass Sie “wirklich” mit “kann nicht per Referenz ausgeführt werden” meinen, dass Ihr Array dynamisch von einer Datenbank zurückgegeben wird und Sie das Array nicht an eine Variable übergeben möchten, bevor Sie das erste Element nehmen davon. Wenn ich Recht habe, ist die überwiegende Mehrheit aller Lösungen, die Ihnen unten zur Verfügung gestellt werden (einschließlich der akzeptierten Antwort), unzureichend.
– Wagen vor dem Pferd
23. Oktober 2012 um 20:16 Uhr
Müssen Sie es nur abrufen oder abrufen und aus dem vorhandenen Array entfernen?
– Jo Smo
10. Juli 2014 um 15:21 Uhr
Für die grundlegende Verwendung von Arrays können Sie diesen Link überprüfen technofusions.com/introduction-to-arrays-in-php
– Vikrant Vir Bhalla
28. Juli 2016 um 18:50 Uhr