2016-11-25 18 views
0

私はcsvファイルをHTMLテーブルに変換しようとしています。最初の部分では、CSVファイルからすべての時間セルを時間配列に、イベントセルをイベント配列に、場所セルを位置配列にロードしようとしています。なぜ配列は空ですか?

fclose($file);の後、私はprint_r($time);を返し、それはArray ([0] => Time)を返しました。しかし、get_data($time, $events, $location);の後、私はprint_r($time);をしてArray()を得ました。なぜそれは空白ですか?すべての時間セルを時間配列に、イベントセルをイベント配列に、場所セルを位置配列にロードするにはどうすればよいですか?

EventsScheduleFriday.csv

Time,Event,Location, 
12:30pm,Hilby The Skinny German Juggle Boy,West State Street, 
4:45pm,Hilby The Skinny German Juggle Boy,West State Street, 
6pm,Finger Lakes Comedy Festival Competition 1st Round (Age 21+),Lot 10, 
8pm,Stand-up Comedy Show,Acting Out NY, 
10pm,All-Star Comedy Show,Acting Out NY 

PHPコード:あなたは法の範囲外である変数を使用しているため場合この問題が発生した

<?php 
    $time = array(); 
    $events = array(); 
    $location = array(); 

function get_data($time, $events, $location) { 
    $file = fopen(__DIR__."/../data/EventsScheduleFriday.csv", "r"); //read .csv file 
    while(!feof($file)) { //while end of file has not been reached 
     $content = fgetcsv($file, ","); //converts first line of csv to an array 
     array_push($time, $content[0]); 
     array_push($events, $content[1]); 
     array_push($location, $content[2]); 
    } 
    fclose($file); //closes csv file 
} 

get_data($time, $events, $location);  

?> 

答えて

2

理由。これらのメソッドをメソッドに渡すと、CSVファイルから正しい値が割り当てられますが、メソッドの終了時にメソッド外には移動されません。これは、PHPが変数とスコープを扱う方法です。あなたがする必要があるのは、参照によって変数を渡すことです。これを行うと、PHPはメソッドの外部に割り当てられた値も持ちます。

function get_data($time, $events, $location) { 

へ:

function get_data(&$time, &$events, &$location) { 

これを行うには、次の行に変更する必要があります

関連する問題