Améliorer l'accès des fonctions aux variables externes
P粉165522886
P粉165522886 2023-10-16 17:43:35
0
2
473

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粉165522886
P粉165522886

répondre à tous(2)
P粉645569197

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;
P粉734486718

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, notamment les sous-sections suivantes :

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal