PHP – Holen Sie sich das erste Element eines Arrays

Lesezeit: 6 Minuten

Benutzeravatar von hsz
hsz

Ich habe ein Array:

array( 4 => 'apple', 7 => 'orange', 13 => 'plum' )

Ich möchte das erste Element dieses Arrays erhalten. Erwartetes Ergebnis: Schnur apple

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?

    – 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

Benutzeravatar von lepe
Lepe

Wie Mike betonte (der einfachste Weg):

$arr = array( 4 => 'apple', 7 => 'orange', 13 => 'plum' );
echo reset($arr); // Echoes "apple"

Wenn Sie den Schlüssel erhalten möchten: (nach dem Zurücksetzen ausführen)

echo key($arr); // Echoes "4"

Von PHP-Dokumentation:

gemischt zurücksetzen (Array | Objekt &$array );

Beschreibung:

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.

    – Jacob

    26. Oktober 2021 um 19:02 Uhr

Benutzeravatar von Tofeeq
Tofeeq

current($array)

gibt das erste Element eines Arrays zurück, laut PHP-Handbuch.

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

Laut PHP-Manual reset.

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.

    – Jacob

    26. Oktober 2021 um 19:03 Uhr

Benutzeravatar von Martin
Martin

$arr = $array = array( 9 => 'apple', 7 => 'orange', 13 => 'plum' );
echo reset($arr); // echoes 'apple'

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:

Abgesehen davon, dass sie semantisch sinnvoll sind, bewegen diese Funktionen nicht einmal den Array-Zeiger (wie foreach würdest du).

Mit den Schlüsseln kann man die Werte direkt über die Schlüssel abrufen.


Beispiele (alle erfordern PHP 7.3+)

Abrufen des ersten/letzten Schlüssels und Werts:

$my_array = ['IT', 'rules', 'the', 'world'];

$first_key = array_key_first($my_array);
$first_value = $my_array[$first_key];

$last_key = array_key_last($my_array);
$last_value = $my_array[$last_key];

Den ersten/letzten Wert als Einzeiler erhalten, vorausgesetzt, das Array darf nicht leer sein:

$first_value = $my_array[ array_key_first($my_array) ];

$last_value = $my_array[ array_key_last($my_array) ];

Abrufen des ersten/letzten Werts als Einzeiler mit Standardwerten für leere Arrays:

$first_value = empty($my_array) ? 'default' : $my_array[ array_key_first($my_array) ];

$last_value = empty($my_array) ? 'default' : $my_array[ array_key_last($my_array) ];

  • Mit kürzen Null-Koaleszenz-Operatornormalerweise ist null Standard, also: $first_value = $my_array[array_key_first($my_array)] ?? null;

    – Mitchell McKenna

    1. April 2020 um 16:37 Uhr


  • Ab PHP 7.3 sollte dies die ausgewählte Antwort sein.

    – Xavi Montero

    3. Oktober 2021 um 10:20 Uhr

1441710cookie-checkPHP – Holen Sie sich das erste Element eines Arrays

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy