Suchen Sie nach dem höchsten Schlüssel / Index in einem Array

91

Wie kann ich mit PHP den höchsten Schlüssel / Index in einem Array erhalten? Ich weiß, wie es für die Werte geht.

ZB Von diesem Array möchte ich "10" als ganzzahligen Wert erhalten:

$arr = array( 1 => "A", 10 => "B", 5 => "C" );

Ich weiß, wie ich es programmieren könnte, aber ich habe mich gefragt, ob es auch eine Funktion dafür gibt.

Raffael Luthiger
quelle

Antworten:

204

Dies sollte gut funktionieren

$arr = array( 1 => "A", 10 => "B", 5 => "C" );
max(array_keys($arr));
Gérald Croës
quelle
Wissen Sie, ob es auch funktionieren würde, wenn ein Schlüssel wie folgt gesetzt wäre: $ arr = array (1 => "A", 10 => "B", 5 => "C", "15" => "D. ");
Raffael Luthiger
2
@ Raffael Luthiger versuchen Sie es zu testen und sehen Sie, ob Sie die richtigen Ergebnisse erhalten.
Jonathan Kuhn
1
Dies behandelt nicht den Fall eines leeren Arrays. Direkt aus dem PHP-Handbuch für max:If an empty array is passed, then FALSE will be returned and an E_WARNING error will be emitted.
Siphon
32

Sie können den maximalen Schlüssel folgendermaßen erhalten:

<?php
$arr = array("a"=>"test", "b"=>"ztest");
$max = max(array_keys($arr));
?>
Fabrizio D'Ammassa
quelle
Es tut mir leid, jemand hat die gleiche Antwort vor mir gepostet.
Fabrizio D'Ammassa
2
$keys = array_keys($arr);
$keys = rsort($keys);

print $keys[0];

sollte "10" drucken

Cfreak
quelle
2

Ich hatte eine Situation, in der ich den nächsten verfügbaren Schlüssel in einem Array erhalten musste, der der höchste + 1 ist.

Wenn das Array beispielsweise $ data = ['1' => 'etwas, '34' => 'etwas anderes'] ist, musste ich 35 berechnen, um dem Array ein neues Element hinzuzufügen, dessen Schlüssel höher als jeder andere war der anderen. Bei einem leeren Array benötigte ich 1 als nächsten verfügbaren Schlüssel.

Dies ist die Lösung, die funktioniert hat:

    $highest = 0;
    foreach($data as $idx=>$dummy)
    {
        if($idx > $highest)$highest=$idx;
    }
    $highest++;

Es wird in allen Fällen funktionieren, leeres Array oder nicht. Wenn Sie nur den höchsten Schlüssel anstelle des höchsten Schlüssels + 1 suchen müssen, löschen Sie die letzte Zeile. Sie erhalten dann den Wert 0, wenn das Array leer ist.

JG Estiot
quelle