Maison > Questions et réponses > le corps du texte
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粉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;
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 :
Pour plus d'informations, vous devriez lire la section fonctions< PHP 手册的 /a>, notamment les sous-sections suivantes :