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) !

Vous aimeriez progresser en PHP ? Mais vous ne savez pas comment vous y prendre ?

S'entraîner pour progresser en PHP

Mon programme "S'entraîner pour progresser en PHP" est disponible. Il vous permettra de recevoir chaque semaine un kata de code directement dans votre boîte mail, ainsi que des aides à la réalisation, des vidéos explicatives et des défis supplémentaires.

Reçois dès maintenant un kata gratuit en cliquant sur le bouton ci-dessous.