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()
我想在第二个函数中使用title、id或depth键。它们只是空出来并抛出一个错误“变量的范围是定义它的上下文。”
您需要在函数外部定义变量(至少最初是这样):
$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_字符串
不是调用上述代码的结果。代码的另一部分正在生成该错误。