【问题标题】:make PHP variable or array not exist out of the function where it was set使 PHP 变量或数组不存在于设置它的函数之外
【发布时间】:2011-04-16 01:16:02
【问题描述】:

我有以下php函数。

function a() {
    $var = "variable";
    return $var;
}
function b() {
    $arr = array('a','r','r','a','y');
    return $arr;
}

这些函数中还有一些 PHP。

$var = a();
$arr = b();
print_r($var);
print_r($arr);

$var$arr 在函数中定义,然后在函数外部重新定义。如何使函数外的变量和数组与函数中的变量和数组分开,使函数中的变量和数组不存在于函数外?

【问题讨论】:

  • 一旦函数返回,里面的所有东西都被“破坏”了。你到底想做什么?你有什么问题吗?
  • 它们分开的;你不需要做任何事情来使它们分开。具有相同的名称并不意味着它们是相同的变量。
  • 但是在进入 Web 开发之前请先学习一些编程基础知识。即使是 0.00 美元的(甚至与语言无关的)编程介绍教程也有一些关于变量范围的内容。这也将使您在 Web 开发方面获得更令人满意的体验。如果您有这种疑问,我不想说但是....您不会走得太远,而且可能会令人沮丧。 PHP 有许多怪异之处,它是duck typed,而且看起来并不容易。不容易调试。

标签: php arrays variables


【解决方案1】:

函数有自己的作用域。除非使用 global 关键字定义函数变量,否则函数变量不存在于函数之外。您可能会因为在函数内部和外部使用相同的变量名而感到困惑。尝试将函数 vars 分别更改为 $fx_arr$fx_var。您会看到它们不存在于函数之外。

【讨论】:

  • 好的,谢谢!这有帮助。我真正的问题出在其他地方。
【解决方案2】:

你需要仔细阅读evariable scope in php

a() 中声明的$var 仅在a()'s 范围内可见。 b() 中的 $arr 也是如此。

这段代码$var = a();应该这样读:

创建全局(针对文档范围)变量$var 并将a() 返回的值分配给它。 走到a() 我们有: 创建局部(仅在函数范围内可见)变量$var 并将'variable' 赋值为值,然后返回$var 的值。

最后你得到了两个同名但范围不同的变量,因此它们不会相互重叠/覆盖。

反之亦然,全局变量在函数范围内不可见。您需要使用全局运算符使它们(导入它们)在函数范围内可见。

希望对您有所帮助。 :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-29
    • 1970-01-01
    • 2019-08-02
    相关资源
    最近更新 更多