0

重複の可能性:
PHPグローバル変数が関数に見つかりません

データベースからデータを読み取る機能があります。簡単に操作できるように、データベースのデータを入れたい配列があります。関数の外部で配列を定義し、関数が呼び出されたときに配列を設定します。

$rid = "";
if(isset($_GET['rid'])){
  $rid = $_GET['rid'];
}

$dates = array();    
function getData($rid){
  //Db Connection Strings
  //Query stuff etc

  //DATES
  for ($i=0; $i < 5; $i++) { 
    $mil = (float)$query->table->records->record->f[$i];
    $seconds = $mil / 1000;
    $dt = gmdate('m-d-Y', $seconds);

    $dates[$i] = $dt;
  }  
  print_r($dates);//THIS WORKS
}

getData($rid);
print_r($dates);//THIS DOESN'T

私の問題は次のとおりです。関数内で参照$datesを呼び出さない限り、データを吐き出すことはありません。実行時に値をテキストフィールドに入力できるように、これを関数の外部で実行する必要があります。

値を$dates配列に取得して、グローバルに使用できるようにするにはどうすればよいですか?ありがとう!

4

4 に答える 4

4

これを行うには、3つの基本的な方法があります。参照による配列の受け渡し、グローバルな呼び出し、関数からの戻りです。

参照による通過

function getData($rid, &$dates) {
    ...
    for ($i=0; $i < 5; $i++) { 
        ...
        $dates[$i] = $dt;
    }
}

getData($rid, $dates);

戻る

function getData($rid) {
    $dates = array();
    ...
    for ($i=0; $i < 5; $i++) { 
        ...
        $dates[$i] = $dt;
    }
    return $dates;
}

$dates = getData($rid);

グローバル

function getData($rid){
    global $dates;
    ...
    for ($i=0; $i < 5; $i++) { 
        ...
        $dates[$i] = $dt;
    }  
}
于 2012-11-02T19:26:51.517 に答える
2

これはスコーピングの問題です。日付を参照として渡すか、関数の結果として日付配列を返す必要があります。

function getData($rid){
   //Do whatever you need to do.
   return $dates;
}


$dates = getData($rid);
print_r($dates);
于 2012-11-02T19:27:44.753 に答える
2

グローバルデータに依存する代わりに、関数から戻るだけです。

function getData($rid) {
    // ...
    return $dates;
}
print_r(getData($rid));

関数の$dates前は役に立たないので、関数内に移動して正しく初期化してください。

于 2012-11-02T19:27:49.063 に答える
1

関数内で次のことを宣言します。

global $dates;

datesこれにより、ローカル変数を作成してそれを使用する代わりに、グローバル変数が使用されます。これが現在行われていることです。

于 2012-11-02T19:27:24.977 に答える