-1

スタック オーバー フロー ディスカッションCan't access global variable inside functionを見ました。

それはこの質問に対処します。しかし、コードを機能させることができませんでした。関数 ConvertCsvFile 内から $batch_fl_str と $batch_str にアクセスしようとしていますが、2 つの変数にアクセスできません。

助言がありますか?これが私のコードです:

$today = date(ymd);
$curr_time = date(Hi);
$local_time = localtime();
$curr_min = str_pad($local_time[1], 2, '0', STR_PAD_LEFT);
$curr_hr = str_pad($local_time[2], 2, '0', STR_PAD_LEFT);
$batch_fl_str = "-" . $today . "-" . $curr_hr . $curr_min;
$batch_str = $today . "-" . $curr_hr . $curr_min ;


function ConvertCsvFile($input_path, $input_file, $input_hist_path, $hdl_output_fl, $hdl_out_hist_fl) {

//  Define static variable

    global $batch_fl_str;
    global $batch_str;
    static $fl_no = 0;        //NOTE: static variable 

    $fl_no++;
    $fl_no_str = str_pad($fl_no, 3, 0, STR_PAD_LEFT);
    $batch_fl_id = $batch_fl_str . "-" . $fl_no_str . "." ;
    $batch_id = $batch_str . "-" . $fl_no_str . "-";
    echo "Batch fl str  = $batch_fl_str \n";
    echo "Batch str     = $batch_str \n";
    echo "Batch file id = $batch_fl_id \n";
    echo "Batch id      = $batch_id \n";

}

上記のプログラムを実行すると、次の出力が表示されます。

Converting the file:  DOC#9553814.CSV
Batch fl str  = -130511-0316
Batch str     = 130511-0316
Batch fl str  =
Batch str     =
Batch file id = -001.
Batch id      = -001-
4

1 に答える 1

0

$GLOBALS配列を使用してグローバル変数にアクセスすることもできます。

例えば

      $foo = 'Hello World!';

      function Hello() {
          echo $GLOBALS['foo'];
      } 

コードで、値が関数自体のグローバル スコープ内の関数の外部の変数に設定されているかどうかをテストします。変数の値が適切に割り当てられていない可能性があります。

于 2013-05-11T00:49:04.093 に答える