Maison > développement back-end > PHP8 > le corps du texte

Explication détaillée de l'expression de correspondance des nouvelles fonctionnalités PHP8

Guanhui
Libérer: 2023-02-17 11:30:02
avant
4542 Les gens l'ont consulté

Explication détaillée de l'expression de correspondance des nouvelles fonctionnalités PHP8

PHP8 alpha2 a été publié et a récemment introduit un nouveau mot-clé : match. La fonction de ce mot-clé est quelque peu similaire à switch.

Je pense que c'est quelque peu intéressant, et la correspondance de mots est également très sympa, alors qu'est-ce que ça fait ?

Dans le passé, nous pouvons souvent utiliser switch pour effectuer un travail de conversion de valeur, similaire à :

function convert($input) {
    switch ($input) {
        case "true":
            $result = 1;
        break;
        case "false":
            $result = 0;
        break;
        case "null":
            $result = NULL;
        break;
    }
    return $result;
}
Copier après la connexion

Ensuite, si nous utilisons le mot-clé match, cela peut devenir similaire à :

function converti($input) {
    return match($input) {
        "true" => 1,
        "false" => 0,
        "null" => NULL,
    };
}
Copier après la connexion

Par rapport à switch, match renverra la valeur directement et la variable intermédiaire $result dans l'exemple de switch ci-dessus n'est plus nécessaire.

Et, comme pour les cas multiples et un bloc de switch, plusieurs conditions de correspondance peuvent également être écrites ensemble, telles que :

return match($input) {
    "true", "on" => 1,
    "false", "off" => 0,
    "null", "empty", "NaN" => NULL,
};
Copier après la connexion

Il convient de noter qu'il est différent de switch, dans le passé, nous pouvons souvent rencontrer ce problème étrange lors de l'utilisation de switch :

$input = "2 person";
switch ($input) {
    case 2:
        echo "bad";
    break;
}
Copier après la connexion

Vous constaterez que bad est en fait sorti, car switch utilise une comparaison lâche (==). Match n'aura pas ce problème. Il utilise une comparaison stricte (===), c'est-à-dire que la valeur et le type doivent être complètement égaux.

De plus, lorsque l'entrée ne peut pas être satisfaite par toutes les conditions du match, le match lancera une exception UnhandledMatchError :

function convert($input) {
    return match($input) {
        "true" => 1,
    };
}
convert("false");
Copier après la connexion

et vous obtiendrez :

Fatal error: Uncaught UnhandledMatchError: Unhandled match value of type string
Copier après la connexion

comme ceci Il n'y a pas lieu de s'inquiéter des erreurs imprévisibles causées par des conditions de correspondance incomplètes.

Tutoriel recommandé : "PHP8"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:laruence.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal