2011-04-16 121 views
0

我有以下php函数。使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在功能来定义,但随后被的功能以外重新定义。我该怎么做才能让函数中的变量和数组与函数中的变量和数组分开,以便函数中的变量和数组不在函数之外?

+1

只要函数返回,里面的所有东西都会被“销毁”。你到底想做什么?你遇到任何问题吗? – 2011-04-16 01:18:35

+1

他们*是*分开;你不需要做任何事情来让他们分开。具有相同的名称并不意味着它们是相同的变量。 – 2011-04-16 01:20:09

+0

但是在进入web开发之前,请学习一些编程基础知识。即使是一个0.00美元的介绍教程(甚至语言中立)编程也有不同的范围。这可以让您在网页开发方面获得更令人满意的体验。如果你有这样的疑惑,我不想说但是......你不会走得太远,这可能会令人沮丧。 PHP有一些奇怪的地方,它是* duck typed *,看起来并不容易。不容易调试。 – gd1 2011-04-16 01:25:47

回答

5

函数有自己的范围。除非使用global关键字定义,否则您的函数变量不在函数之外。您可能会在函数内部和外部使用相同的变量名称来混淆自己。尝试将函数变量分别更改为$fx_arr$fx_var。你会看到它们不存在于函数之外。

+0

好的,谢谢!这有帮助。我真正的问题是在别的地方。 – 2011-04-16 01:30:19

1

你需要更仔细地在a()宣布evariable scope in php

$var阅读只是a()'s范围内可见。 $arrb()也是如此。

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

创建全局(用于文档的范围)可变$var并指定由a()返回到它的价值。 步进到a()我们有: 创建本地(仅在函数范围内可见)变量$var并将'变量'赋值为值,然后返回值$var

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

相反也是有效的,全局变量在函数范围内是不可见的。您需要使用全局运算符来使它们(导入它们)在函数范围内可见。

希望能帮到你。 :)