使一个函数中定义的数组键可用于第二个函数

时间:2012-12-31 21:29:59

标签: php arrays function global

似乎无法使这项工作成功。

我想让下面的数组可用于第二个函数,但它总是空的

主要代码是:

function GenerateSitemap($params = array()) {          

$array = extract(shortcode_atts(array(                         
'title' => 'Site map',                         
'id'    => 'sitemap',                         
'depth' => 2                         
), $params));                                  

global $array; 

}  


function secondfunction()

{
global $array; 

print $title;

// this function throws an error and can't access the $title key from the first function
}

GenerateSitemap()

secondfunction()

我想在第二个功能中使用标题 id 深度 KEYS。他们只是空出来并抛出错误

2 个答案:

答案 0 :(得分:1)

“变量的范围是定义它的上下文。”

http://us3.php.net/language.variables.scope.php

您需要在函数外定义变量(至少最初):

   $array = array();

    function GenerateSitemap($params = array()) {          
       global $array; 
       $array = extract(shortcode_atts(array(                         
          'title' => 'Site map',                         
         'id'    => 'sitemap',                         
         'depth' => 2                         
      ), $params));                                  
   }  

   function SecondFunction() {          
       global $array; 
       ...
   }

答案 1 :(得分:0)

在函数内部使用变量之前,需要将变量声明为global,否则会隐式创建局部变量。

function myFunc() {
    global $myVar;
    $myVar = 'Hello World';
}

myFunc();
print_r($myVar);    // 'Hello World'

你实际上不必在globalscope中最初声明它,你不会收到通知/警告/错误,尽管这样做显然是好习惯。 (虽然如果良好实践是目标,那么你可能不应该开始使用全局变量。)