1

これを機能させることはできません。

以下の配列を2番目の関数で使用できるようにしたいのですが、常に空になります

主なコードは次のとおりです。

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

2 番目の関数内でtitleidまたはdepth 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 に答える