Rechercher la clé / l'index le plus élevé dans un tableau

92

Comment puis-je obtenir avec PHP la clé / l'index le plus élevé d'un tableau? Je sais le faire pour les valeurs.

Par exemple, à partir de ce tableau, je voudrais obtenir "10" comme valeur entière:

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

Je sais comment je pourrais le programmer, mais je me demandais s'il y avait une fonction pour cela aussi.

Raffael Luthiger
la source

Réponses:

205

Cela devrait bien fonctionner

$arr = array( 1 => "A", 10 => "B", 5 => "C" );
max(array_keys($arr));
Gérald Croës
la source
Savez-vous si cela fonctionnerait également si une clé est définie comme ceci: $ arr = array (1 => "A", 10 => "B", 5 => "C", "15" => "D ");
Raffael Luthiger
2
@Raffael Luthiger essayez de le tester et voyez si vous obtenez les bons résultats.
Jonathan Kuhn
1
Cela ne gère pas le cas d'un tableau vide. Directement du manuel PHP pour max:If an empty array is passed, then FALSE will be returned and an E_WARNING error will be emitted.
Siphon
33

Vous pouvez obtenir la clé maximale de cette façon:

<?php
$arr = array("a"=>"test", "b"=>"ztest");
$max = max(array_keys($arr));
?>
Fabrizio D'Ammassa
la source
Je suis désolé, quelqu'un a posté la même réponse avant moi.
Fabrizio D'Ammassa
2
$keys = array_keys($arr);
$keys = rsort($keys);

print $keys[0];

devrait imprimer "10"

Cfreak
la source
2

J'ai eu une situation où je devais obtenir la prochaine clé disponible dans un tableau, qui est la plus élevée + 1.

Par exemple, si le tableau est $ data = ['1' => 'quelque chose, '34' => 'quelque chose d'autre'] alors je devais calculer 35 pour ajouter un nouvel élément au tableau qui avait une clé supérieure à tout des autres. Dans le cas d'un tableau vide, j'avais besoin de 1 comme prochaine clé disponible.

C'est la solution qui a fonctionné:

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

Cela fonctionnera dans tous les cas, tableau vide ou non. Si vous avez seulement besoin de trouver la clé la plus élevée plutôt que la clé la plus élevée + 1, supprimez la dernière ligne. Vous obtiendrez alors une valeur de 0 si le tableau est vide.

JG Estiot
la source