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

Tu aimerais progresser en PHP ? Mais tu ne sais pas comment t'y prendre ?

S'entraîner pour progresser en PHP

Mon programme "S'entraîner pour progresser en PHP" va bientôt ouvrir ses portes. Il te permettra de recevoir chaque semaine un kata de code directement dans ta boîte mail, ainsi que des aides à la réalisation, des vidéos explicatives, voire des live coding et de la review.

Si tu es intéressé(e), clique sur le bouton ci-dessous pour avoir plus d'informations et t'inscrire afin d'être prévenu(e) de l'ouverture de ce programme.