recherche

Maison  >  Questions et réponses  >  le corps du texte

Améliorer l'accès des fonctions aux variables externes

J'ai un tableau à l'extérieur :

$myArr = array();

Je veux que ma fonction accède au tableau à l'extérieur de celui-ci afin qu'elle puisse y ajouter des valeurs

function someFuntion(){
    $myVal = //some processing here to determine value of $myVal
    $myArr[] = $myVal;
}

Comment donner aux variables la portée correcte pour les fonctions ?

P粉165522886P粉165522886460 Il y a quelques jours503

répondre à tous(2)je répondrai

  • P粉645569197

    P粉6455691972023-10-17 13:51:02

    Vous pouvez utiliser des fonctions anonymes :

    $foo = 42;
    $bar = function($x = 0) use ($foo) {
        return $x + $foo;
    };
    var_dump($bar(10)); // int(52)

    Ou vous pouvez utiliser la fonction flèche :

    $bar = fn($x = 0) => $x + $foo;

    répondre
    0
  • P粉734486718

    P粉7344867182023-10-17 13:39:45

    Par défaut, lorsque vous êtes dans une fonction, vous n'avez pas accès aux variables externes.


    Si vous souhaitez qu'une fonction puisse accéder à une variable externe, vous devez la déclarer comme variable globale à l'intérieur de la fonction :

    function someFuntion(){
        global $myArr;
        $myVal = //some processing here to determine value of $myVal
        $myArr[] = $myVal;
    }

    Pour plus d'informations, voir Portée variable .

    Mais veuillez noter que utiliser des variables globales n'est pas une bonne pratique : de cette façon, votre fonction n'est plus indépendante.


    Une meilleure idée est que votre fonction renvoie le résultat  :

    function someFuntion(){
        $myArr = array();       // At first, you have an empty array
        $myVal = //some processing here to determine value of $myVal
        $myArr[] = $myVal;      // Put that $myVal into the array
        return $myArr;
    }

    Et appelez la fonction comme ceci :

    $result = someFunction();


    Vos fonctions peuvent également accepter des arguments et même gérer les arguments passés par référence  :

    function someFuntion(array & $myArr){
        $myVal = //some processing here to determine value of $myVal
        $myArr[] = $myVal;      // Put that $myVal into the array
    }

    Ensuite, appelez la fonction comme ceci :

    $myArr = array( ... );
    someFunction($myArr);  // The function will receive $myArr, and modify it

    Avec ceci :

    • Votre fonction reçoit un tableau externe en paramètre
    • Et il peut être modifié puisqu'il est passé par référence.
    • C'est mieux que d'utiliser des variables globales : votre fonction est une unité, indépendante de tout code externe.


    Pour plus d'informations, vous devriez lire la section fonctions< PHP 手册的 /a>, notamment les sous-sections suivantes :

    répondre
    0
  • Annulerrépondre