2011-04-28 83 views
0

外表下面代码变量数组:函数来获得功能

$myvar = array(); 

first(); 

function first() 
{ 
    global $myvar; 

    $array(apple, banana, orange); 
} 

second(); 

function second() 
{ 
    global $myvar; 

    print_r($array); 
} 

然后在输出,第二函数犯规显示阵列... = /我不获取功能如何从其他功能变量数组...

+3

这不是有效的PHP – JohnP 2011-04-28 17:39:40

+0

你想要做什么?第一个函数中的$ array是没有意义的 - $array(...);实际上是通过$ array变量中的名称调用函数 - 但该变量未初始化。 – 2011-04-28 17:40:14

回答

2

两件事

$myvar在你的函数的任何地方都没有使用;

你应该学习如何在声明数组中添加元素。

function first() 
    { 
     global $myvar;   
     $myvar=array('apple','banana','orange'); 
    } 
+0

那么如果使用$ myvar = explode(“;”,$ line)呢? – user453089 2011-04-28 17:41:55

+0

@user:它是从哪里来的?$ line是什么? – 2011-04-28 17:44:17

+0

我只举例... $ line =“apple; banana; orange;”;因为即时通讯在麻烦的PHP读写文件..我看到函数不能从全局变量读取数组。 – user453089 2011-04-28 17:49:09

1

您不在任何地方设置变量$array

-4

使用的一类,而不是两个功能一个全局变量试试这个:

class functions { 

    $myvar = array(); 

    function first(){ 
     $this->myvar = array('apple', 'banana', 'orange'); 
    } 

    function second(){ 
     print_r($this->myvar); 
    } 
} 

$fn = new functions(); 

$fn->first(); 
$fn->second(); 

这是不使用全局变量是一个好主意(如你在你的问题做了)。

+4

...坚持公告板语法和提供不相关的建议,而不是对OP有用的解释。 – mario 2011-04-28 17:45:50

+0

@mario,你是什么意思'公告板语法'?我的建议并非无关紧要,使用全局变量不是一个好主意,它可能会使手写大写 – Neal 2011-04-28 17:47:19

+3

使用适当的大写字母。这些愚蠢的全球化是邪恶的模因在一个简单的一行中不是太有帮助。将两个简单函数重写成一个对象并不能解释OP遇到的问题。 – mario 2011-04-28 17:49:41

1

$array是不是在功能2.

1

不要范围内使用,只是因为你是懒惰的全局变量。使用返回值和功能参数而不是

function first() { return array('apple','banana', 'orange'); } 
function second ($param) { print_r($param); } 
$fruit = first(); 
second($fruit); 
1

你问在global $myvar;行的变量$myvar,但你要使用一个名为$array变量。使用线

尝试:

$myvar = array('apple','banana','orange'); 

print_r($myvar); 
-1

我的事情正确的代码看起来是这样的:

$myvar = array(); 

first(); 
second(); 

function first(){ 
    global $myvar; 
    array_push($myvar, 'apple', 'banana', 'orange'); 
} 
function second(){ 
    global $myvar; 
    print_r($myvar); 
} 

array_push增加新项目的数组。