当前位置: 首页 > 面试题库 >

使我的函数可以访问外部变量

阴英武
2023-03-14
问题内容

我外面有一个数组:

$myArr = array();

我想让我的函数可以访问其外部的数组,以便可以向其添加值

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

如何为函数赋予正确的作用域范围?


问题答案:

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

如果您希望函数可以访问外部变量,则必须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

有了这个 :

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


 类似资料:
  • 问题内容: 我想使用匿名函数,所以我决定制作一个简单的主要查找器。这里是: 然而,我发现了什么,就是在每次访问,而我希望它是一个字面上的数字。我怎样才能使其成为替代? 问题答案: 您可以在创建lambda时“捕获” 这会将lambda的上下文设置为等于创建时的值。您还可以说,如果需要的话,它并不能完全捕获,但是可以满足您的需要。 这是一个查找问题,类似于具有定义函数的以下内容:

  • 问题内容: 我确实阅读了许多讨论内部类的主题,并且给人的印象是内部类可以访问封闭类的变量和方法。在下面的代码中,我有一个外部类和一​​个内部类,在测试类中,我创建了一个外部类的实例,然后从中创建了一个内部类的实例。但是我无法通过内部类引用访问String变量。救命? 问题答案: 内部类可以通过自己的方法访问外部类的方法和属性。看下面的代码:

  • 我确实读过一些讨论内部类的主题,我的印象是内部类可以访问封闭类的变量和方法。下面我有一个外部类和一个内部类,在测试类中我创建一个外部类的实例,然后从它创建一个内部类的实例。但是,我无法通过内部类引用访问字符串变量a。帮忙?

  • 问题内容: 这是在Playground中完成的,只是为了简化。 没有编译器警告。实际上,自动完成显示没有问题。我的理解是,在类{}的边界之外,我不应该看到私有的东西,也不可以。 我想念什么吗? 问题答案: Swift中的访问修饰符与其他语言的实现方式不同。分为三个级别: :仅在 该特定文件 内可访问 __ :仅在模块(项目)中可访问 :可从任何地方访问 除非另有标记,否则您编写的所有内容均为默认设

  • 问题内容: 基本上,我使用此方便的函数来处理数据库行(请注意PDO和/或其他内容) 使用此功能,我可以简单地执行以下操作: 假设现在我需要将所有内容串联在一起(这只是一个示例)。 我该怎么办?我当时在想像这样的东西,但是它不是很优雅: 问题答案: 你必须使用如在文档中所述: 闭包也可以从父范围继承变量。任何此类变量必须在函数头中声明。从父作用域继承变量与使用全局变量不同。全局变量存在于全局范围内,

  • 本文向大家介绍JavaScript闭包函数访问外部变量的方法,包括了JavaScript闭包函数访问外部变量的方法的使用技巧和注意事项,需要的朋友参考一下 闭包是指有权访问另一个函数作用域中的变量的函数,但作用域的配置机制有一个需要注意的地方,即闭包只能取得包含函数中任何变量的最后一个值。 如以下案例: 执行结果: 表面上看,似乎每个函数返回的i值都不相同,比如c_arr[0]的值应该是0,c_a