Récupérer la première et la dernière clé d'un tableau

Avant php 7.0 (😱), pour récupérer la première et la dernière clé d'un tableau, vous pouvez écrire :

$var = [
    "a" => "John",
    "b" => "Jane",
    "c" => "Baby",
];

$first = isset(array_keys($var)[0]) ? array_keys($var)[0] : null;
// $first = "a"
$last = isset(array_keys($var)[count($var) - 1]) ? array_keys($var)[count($var) - 1] : null;
// $last = "c"

À partir de php 7.0, vous pouvez largement simplifier en écrivant :

$var = [
    "a" => "John",
    "b" => "Jane",
    "c" => "Baby",
];

$first = array_keys($var)[0] ?? null;
// $first = "a"
$last = array_keys($var)[count($var) - 1] ?? null;
// $last = "c"

Mais depuis PHP 7.3, il existe deux nouvelles méthodes pour aller droit au but : array_key_first et array_key_last

$var = [
    "a" => "John",
    "b" => "Jane",
    "c" => "Baby",
];

$first = array_key_first($var);
// $first = "a"

$last = array_key_last($var);
// $last = "c"

Ces deux méthodes retournent la clé si le tableau n'est pas vide, null sinon.

Et que se passe-t-il si la première ou la dernière clé de votre tableau à la valeur null ?

Savez-vous qu'en PHP, vous pouvez déclarer par exemple

$var = [
    null => "John",
    "b" => "Jane",
    "c" => "Baby",
];

Dans cet exemple, la méthode array_key_first retournera non pas null mais une chaîne vide "". D'ailleurs la valeur John sera affichée si vous faites echo $var[""] !

Et pour aller encore plus loin, si vous écrivez :

$var = [
    null => "John",
    "b" => "Jane",
    "" => "Baby",
];

finalement le tableau ne contiendra que deux valeurs :

$var = [
    null => "Baby",
    "b" => "Jane",
];

Pour résumer : éviter les valeurs null et les chaînes vides dans les clés de vos tableaux (sauf si vous savez vraiment ce que vous faites) !

Cet article t'a plu ? Si oui, je te propose de t'inscrire à ma dev letter pour recevoir régulièrement dans ta boîte mail mes conseils, mes nouveaux articles, des vidéos à voir, des outils à découvrir et encore bien d’autres choses.

Je m'inscris