Wie kann ich das Element vor dem letzten Element von einem Array in PHP5 bekommen?PHP - Wie bekomme ich das Element vor das letzte Element eines Arrays?
Antwort
$array[count($array)-2]
Es sollte ein numerisch indexiertes Array (von Null) sein. Sie sollten mindestens 2 Elemente haben, damit dies funktioniert. (Offensichtlich)
Dies funktioniert sogar auf diesem Array:
$array[0] = "hello";
$array[5] = "how";
$array[9] = "are";
end($array);
echo prev($array); // will print "how"
Die anderen Lösungen count() geht davon aus, dass der Indizes des Array gehen, um; Indem Sie end und prev verwenden, um den Array-Zeiger zu verschieben, erhalten Sie die tatsächlichen Werte. Versuchen Sie es mit der count() -Methode für das obige Array und es wird fehlschlagen.
Das ist brilliant. Ich habe versucht, die mit dem Häkchen markierte Lösung zu verwenden, konnte aber nicht mit meinen Arrays arbeiten (alles von 1 bis 20 möglichen Zählungen). Ihre Lösung hat wie ein Zauber funktioniert. Danke. –
Eine Methode, die sowohl für assoziative Array und numerische Array funktioniert, ist array_pop()
zu verwenden, um das Element vom Ende des Arrays Pop.
$last = array_pop($array);
$second_last = array_pop($array);
// put back the last
array_push($array, $last);
@ + 1: tolle Idee. Danke – Gowri
array_slice nimmt einen negativen Offset als zweites Argument. Dadurch erhalten Sie ein einzelnes Element Array die zweite letzte Objekt vorkommt:
$arr = array(1,2,3,4,5,6);
array_slice($arr, -2, 1);
Wenn Sie nur den einzigen Wert wollen auf seine eigene haben Sie mehrere Möglichkeiten. Wenn es Ihnen nichts ausmacht, eine Zwischenvariable zu verwenden, können Sie einfach den ersten Wert mit [0] abrufen oder array_pop oder array_shift aufrufen, beide benötigen eine Variable, die als Referenz übergeben wird, oder Sie erhalten Warnungen im strikten Modus.
Oder Sie könnten einfach array_sum oder array_product verwenden, die ein bisschen hacky ist, aber funktioniert gut für einzelne Artikel-Arrays.
Schöne flexible Lösung für variable Punkte in einem Array. implode ('', array_slice ($ arr, -2, 1)) bekommt es in einer Zeile. – Praesagus
Was mich ziemlich klein Lösung
end($array);
echo prev($array);
Dies ist die beste Antwort, die akzeptierte Antwort ist im Vergleich schrecklich. – TarranJones
// Indexed based array
$test = array('a','b','c','d','e');
$count = count($test);
print $test[$count-2];
// Associative Array
$months = array(
'jan'=>'January',
'feb' => 'february',
'mar' => 'March',
'apr' => 'April'
);
$keys = array_keys($months);
$count = count($keys);
print $keys[$count-2];
Alle Arrays haben eine „interne Array-Zeiger“ die dem aktuellen Array-Element verweist, hat PHP mehrere Funktionen, die Ihnen erlauben, durch die navigieren Array und Anzeigen der aktuellen Elemente Schlüssel und Wert.
end()
- Einstellen der internen Zeiger eines Arrays auf dem letzten Elementreset()
- Einstellen der internen Zeiger eines Arrays auf sein erstes Elementprev()
- Zurückspulen der interne Zeigernext()
- Weiterleiten des internen Array-Zeigers eines Arrayscurrent()
- Zurückgeben des aktuellen Elements in einem Arraykey()
- Holt einen Schlüssel von einem Arrayeach()
- Liefert die aktuellen Schlüssel und Wertepaar aus einem Array und rückt den Array Cursor
Diese Funktionen arbeiten, ob das Array leer ist, sequenziellen oder assoziativ und als Array wurde im Beispiel nicht angegeben Ich habe angenommen, dass dies mit jedem Array funktionieren muss.
$array = array(
'before_last' => false,
'last' => false,
);
end($array); /*
- set pointer to last element -> $array['last']
- return new current element value if it exists, -> false
- else return FALSE
*/
prev($array); /*
- set pointer one place before current pointer -> $array['before_last']
- return new current element value if it exists, -> false
- else return FALSE
*/
if(!is_null(key($array)){ /*
- return current element key if it exists -> "before_last"
- else return NULL
*/
$before_last_element_value = current($array); /*
- return current element value if it exists, -> false
- else return FALSE
*/
}
Wie Sie das erwartete Ergebnis sehen (false
) und das Ergebnis für ein nicht vorhandenes Element ist das gleiche (FALSE
), so dass Sie kann nicht überprüfen, ob ein Element existiert das zurückgegebene Elementwert verwendet wird, ist ein Element Schlüssel anders.
Der Schlüssel kann entweder integer oder string sein. Der Wert kann
type
sein. source
Die key()
gibt den Wert des aktuellen Schlüssels, wenn das Element existiert sonst wird es NULL zurück. Ein gültiger Schlüssel kann niemals NULL sein. Wenn also null zurückgegeben wird, können wir feststellen, dass das Element nicht existiert.
- 1. Wie bekomme ich das letzte Element eines verschachtelten Arrays?
- 2. Ändern das letzte Element eines Arrays
- 3. Wie ändert man das letzte Element eines Arrays?
- 4. Wie bekomme ich das erste und letzte Element von Array
- 5. Typescript: Zugriff auf das letzte Element eines Arrays
- 6. Das letzte Element eines Arrays in CoffeeScript abrufen
- 7. Destrukturierung das letzte Element eines Arrays in es6 zu bekommen
- 8. Das letzte Element eines Arrays wurde vom ersten Element des nächsten Arrays überschrieben
- 9. Wie bekomme ich das letzte Element einer Sequenz in XPath?
- 10. C# linkedlist Wie bekomme ich das Element, das vor dem letzten Element ist
- 11. Ich muss eine Funktion erstellen, die das letzte Element eines Arrays zurückgibt, das übergeben wird
- 12. Das erste Element eines leeren Arrays abrufen
- 13. Holen Sie das letzte Element des String-Arrays in Vb6?
- 14. Wie gruppiere ich das erste Element eines Arrays mit MongoDB?
- 15. Wie entferne ich das erste Element eines Arrays in Zweig?
- 16. Wie bekomme ich das vorhergehende Element?
- 17. Wie bekomme ich das n-te Element eines Seq?
- 18. Wie lösche ich das letzte Element aus einem Array?
- 19. Holen Sie sich nur das letzte Element des Arrays Mungo
- 20. Zeige nur das letzte Element im Array
- 21. ungesetzt letzte Element des Arrays
- 22. PHP: Wie das letzte Element in Foreach-Schleife überspringen
- 23. Wie ermittelt man das letzte Element bei Verwendung eines Iterators?
- 24. Hinzufügen eines onclick-Ereignisses zu einem neuen html-Element, das nur für das letzte Element funktioniert
- 25. Wie das passende Element des Arrays
- 26. Wie findet man das größte Element eines Arrays bekannter Größe?
- 27. Wie bekomme ich das letzte Element-Array (doppelte Daten entfernen) wenn ich die Bedingung
- 28. Get Nth Element eines Arrays, das von "string_to_array()" -Funktion
- 29. Holen Sie sich das erste Element eines spärlichen JavaScript-Arrays
- 30. Wie entferne ich das letzte Element aus einer Schicht?
Vielen Dank. Und alles. –
Eriks Antwort ist korrekter, er berücksichtigt nicht nur den Fall, den er mit nicht-sequentiellen Schlüsseln angibt, sondern arbeitet auch mit assoziativen Arrays (Arrays mit Strings als Schlüssel) –
Die Frage lässt leicht vermuten, dass das Subjekt ein lineares Array ist . Wenn das Array ein einzelnes Element enthält und error_reporting (E_ALL) gesetzt ist, schlägt meine Lösung mit 'Notice: Undefined offset: -1 in /test.php in Zeile 3' fehl. Eriks Lösung schlägt lautlos. Das ist schlecht. – Notinlist