gpt4 book ai didi

php - 帮助我理解 PHP 变量引用和作用域

转载 作者:可可西里 更新时间:2023-11-01 12:57:10 25 4
gpt4 key购买 nike

引用资料:

  1. 如果我将变量传递给函数(例如 $var),它是否应该是对实际变量的引用的副本(这样将其设置为 null 不会影响其他副本)?
  2. 或者它是否接收到对实际变量的新副本的引用(这样将其设置为 null 只会破坏其副本)?
  3. 如果是后者,这会复制内存中的对象和数组吗?如果是这样的话,这似乎是浪费内存和 CPU 时间的好方法。

我认为首先要了解其工作原理,才能正确理解引用传递(例如 &$var)。

范围:

  1. 与本地范围有何关系?我是否正确地观察到我可以在一个函数中声明一个数组,然后在该函数内调用的其他函数中使用该数组而不将其作为参数传递给它们?
  2. 同样,在函数内调用的函数中声明数组是否允许它在调用者中可用?
  3. 如果不是,那么范围界定是否通过调用堆栈或任何我开始理解的关于编程的该死的东西告诉我它应该起作用?

PHP 非常有趣。 :(

最佳答案

如果我将变量传递给函数(例如 $var),它是否应该是对实际变量的引用的副本(这样将其设置为 null 不会影响其他副本)?

取决于功能。还有你怎么调用它。看这个例子: http://www.ideone.com/LueFc

或者它是否接收到对实际变量的新副本的引用(这样将其设置为 null 只会破坏其副本)?

又要看函数

如果是后者,这会复制内存中的对象和数组吗?如果是这样的话,这似乎是浪费内存和 CPU 时间的好方法。

使用引用肯定会节省内存。在 php>4 中,除非您另外指定,否则它始终使用对象的引用。

局部作用域有什么用?我是否正确地观察到我可以在一个函数中声明一个数组,然后在该函数内调用的其他函数中使用该数组而不将其作为参数传递给它们?

不,你不能。

同样,在函数内调用的函数中声明数组是否允许它在调用者中可用?

不,它没有。

如果不是,范围界定是否通过调用堆栈或任何我开始理解的关于编程的该死的东西告诉我它应该起作用?

如果你想从函数外部使用一个变量,在使用它之前,你应该写 global $outsidevar

关于php - 帮助我理解 PHP 变量引用和作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4749827/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com