为了账号安全,请及时绑定邮箱和手机立即绑定

赋予函数对外部变量的访问权限

/ 猿问

赋予函数对外部变量的访问权限

PHP
慕运维8079593 2019-07-20 14:42:58

赋予函数对外部变量的访问权限

我在外面有一个数组:

$myArr = array();

我想让我的函数访问它之外的数组,这样它就可以为它添加值。

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

如何对变量赋予函数正确的作用域?


查看完整描述

3 回答

?
aluckdog

默认情况下,当您在函数中时,您无法访问外部变量。


如果您希望您的函数能够访问外部变量,则必须将其声明为global,功能内部:

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

有关更多信息,请参见可变范围.

但请注意使用全局变量不是一个好做法。:这样,你的功能就不再是独立的了。


更好的办法是让你的功能返回结果 :

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;}

然后像这样调用这个函数:

$result = someFunction();


您的函数也可以接受参数,甚至通过引用传递的参数的工作 :

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

然后,按如下方式调用该函数:

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

因此:

  • 您的函数接收外部数组作为参数。
  • 并且可以修改它,因为它是通过引用传递的。
  • 这比使用全局变量更好:您的函数是一个单元,独立于任何外部代码。


有关这方面的更多信息,请阅读功能PHP手册中的一节,特别是以下小节:


查看完整回答
反对 回复 2019-07-20
?
达令说
$foo = 42;$bar = function($x = 0) use ($foo){
    return $x + $foo;};var_dump($bar(10)); // int(52)

更新:现在支持箭头函数,但我会让更多的人使用它来创建答案。


查看完整回答
反对 回复 2019-07-20
?
牧羊人nacy
Global $myArr;$myArr = array();function someFuntion(){
    global $myArr;

    $myVal = //some processing here to determine value of $myVal
    $myArr[] = $myVal;}

预先警告,人们通常远离全球化,因为它有一些不利因素。

你可以试试这个

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



查看完整回答
反对 回复 2019-07-20

添加回答

回复

举报

0/150
提交
取消
意见反馈 邀请有奖 帮助中心 APP下载
官方微信