1

似乎无法完成这项工作。

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

主要代码是这样的:

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()

我想在第二个函数中使用titleiddepth KEYS。他们只是空出来并抛出错误

4

2 回答 2

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; 
       ...
   }
于 2012-12-31T21:36:10.377 回答
0

您需要像global在函数中使用它之前一样声明该变量,否则它将隐式创建一个局部变量。

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

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

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

于 2012-12-31T21:44:24.650 回答