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

Php 使一个函数中定义的数组键对第二个函数可用,php,arrays,function,global,Php,Arrays,Function,Global,似乎无法使这项工作成功 我想让下面的数组可用于第二个函数,但它总是空的 主要代码如下: function GenerateSitemap($params = array()) { $array = extract(shortcode_atts(array( 'title' => 'Site map', 'id' => 'sitemap',

似乎无法使这项工作成功

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

主要代码如下:

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键。它们只是空出来并抛出一个错误

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

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

   $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; 
       ...
   }
“变量的范围是定义变量的上下文。”

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

   $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; 
       ...
   }

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

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

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

实际上,您不必在globalscope中声明它,您不会收到通知/警告/错误,尽管这样做显然是一种好的做法。(虽然如果目标是良好实践,那么您可能不应该首先使用全局变量。)

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

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

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

实际上,您不必在globalscope中声明它,您不会收到通知/警告/错误,尽管这样做显然是一种好的做法。(如果目标是良好实践,那么您可能不应该首先使用全局变量。)

您如何称呼它?您是否使用了
print\r($your\u array)
要查看输出并确保数组正在写入?
print$title
应阅读
print$array['title']
-如您在评论中所说。。。您正在从数组访问标题“key”。(调用变量“array”会让人困惑。)放在一边。。。为什么不从
secondfunction()
内部调用
GenerateSitemap()
,避免使用全局变量?您的代码有几个问题。分号在PHP中不是可选的。在设置变量的值之前,必须将其设置为全局变量。函数shortcode_atts返回什么?提取不会使$title变量成为全局变量,只会使$array变量成为全局变量。如何调用它?您是否使用了
print\r($your\u array)
要查看输出并确保数组正在写入?
print$title
应阅读
print$array['title']
-如您在评论中所说。。。您正在从数组访问标题“key”。(调用变量“array”会让人困惑。)放在一边。。。为什么不从
secondfunction()
内部调用
GenerateSitemap()
,避免使用全局变量?您的代码有几个问题。分号在PHP中不是可选的。在设置变量的值之前,必须将其设置为全局变量。函数shortcode_atts返回什么?提取不会使$title变量成为全局变量,只会使$array变量成为全局变量。在对其执行任何操作之前,请先在函数中将其定义为全局变量,否则您只需使用一个本地副本,该副本将被替换为全局版本。无需在函数外部定义变量,在函数中声明为全局代码就足够了。如果您测试该代码,它根本不起作用。您可以访问GenerateSitemap函数,但当您访问它时,Second function()将抛出一个错误。解析错误:语法错误,意外的T_字符串,这是我的问题。@omar:
解析错误:语法错误,意外的T_字符串
不是调用上述代码的结果。代码的另一部分是生成该错误。在处理该错误之前,请在函数中将其定义为全局,否则您只需处理一个本地副本,该副本将被全局版本替换。您不需要在函数外部定义变量,在函数中声明为全局代码就足够了。如果您测试该代码,它根本不起作用。您可以访问GenerateSitemap函数,但当您访问它时,Second function()将抛出一个错误。解析错误:语法错误,意外的T_字符串,这是我的问题。@omar:
解析错误:语法错误,意外的T_字符串
不是调用上述代码的结果。代码的另一部分正在生成该错误。