Maison  >  Article  >  développement back-end  >  Vérifiez zéro, puis attribuez une valeur à partir de la structure

Vérifiez zéro, puis attribuez une valeur à partir de la structure

PHPz
PHPzavant
2024-02-09 13:54:08516parcourir

检查 nil 后从结构体中赋值

L'éditeur de PHP, Strawberry, vous présentera aujourd'hui une technique de programmation courante : "vérifier zéro puis attribuer une valeur à partir de la structure". Lors de l'écriture de code, nous rencontrons souvent des situations où nous devons obtenir la valeur d'un certain champ à partir d'une structure. Cependant, en raison de la possibilité de valeurs nulles, prendre directement la valeur peut provoquer le blocage du programme. Afin de résoudre ce problème, nous devons effectuer une vérification nulle avant de prendre la valeur afin de garantir la stabilité du programme. Cet article présentera en détail la mise en œuvre spécifique de cette technique pour aider les lecteurs à mieux la comprendre et l'appliquer dans le développement réel.

Contenu de la question

J'ai une structure qui contient des éléments tels que la structure.

Supposons que ma distribution soit la suivante :

validfrom := dkdm.authenticatedpublic.requiredextensions.kdmrequiredextensions.contentkeysnotvalidbefore Ces données sont dynamiques et tout élément à tout moment peut être nul en raison d'une erreur d'analyse ou de l'absence de données.

Par exemple, kdmrequiredextensions 可以为 nil,当我尝试访问 contentkeysnotvalidbefore cela générera une erreur de référence de pointeur nulle.

Est-il possible d'avoir une méthode qui prend des éléments et vérifie la chaîne de valeurs un par un, en ne retournant que si aucun élément n'est nul.

validfrom := checkandassign(dkdm.authenticatedpublic.requiredextensions.kdmrequiredextensions.contentkeysnotvalidbefore)

J'ai essayé une instruction if avant le devoir, mais j'espérais une manière plus propre.

if dkdm.AuthenticatedPublic.RequiredExtensions != nil &&
    dkdm.AuthenticatedPublic.RequiredExtensions.KDMRequiredExtension != nil {
      validFrom = dkdm.AuthenticatedPublic.RequiredExtensions.KDMRequiredExtensions.ContentKeysNotValidBefore
}

Solution de contournement

Est-il possible d'avoir un moyen qui accepte les éléments et vérifie la chaîne de valeurs un par un, en ne revenant que si aucun élément n'est nul.

Non, il n'existe pas de syntaxe ou d'outils de ce type.

J'ai essayé une instruction if avant le devoir, mais j'espérais une manière plus propre.

if les déclarations sont la manière « propre ». Vous pouvez le raccourcir en introduisant une nouvelle variable comme

if re := dkdm.AuthenticatedPublic.RequiredExtensions; re != nil && 
    re.KDMRequiredExtension != nil  {
    ....
}

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer