2016-08-01 84 views
0

我已經FILE.CSV這樣的:獲取價值的多維

Name , Gender , Age //header 
John , M  , 22 
Jack , M  , 20 

我在陣列讀它和商店,讓我試試這個:

$fileName = "file.csv"; 
$array = array_map('str_getcsv', file('file.csv')); 

這給了我一個數組像這樣:

Array [0] => 
       Array ([0] => Name [1] => Gender [2] => Age) 
     [1]=> 
       Array ([0] => John [1] => M  [2] => 22) 
     [2]=> 
       Array ([0] => Jack [1] => M  [2] => 20) 

這是很簡單,但我很抱歉,我不知道如何:I'( 想只從每個p時代價值erson(不包括標題)的參數在我的函數countAge($年齡)。我怎樣才能做到這一點?

回答

0

您可以array_shift()刪除數組的第一個元素,然後用foreach這樣的循環:

array_shift($array); 

foreach($array as $a) 
{ 
    if (isset($a[2])) 
    { 
     $age = $a[2]; // $a[2] has the age value 
     echo "Age: " . $age; 
    } 
} 

,或者你可以使用從第二個元素開始的for循環遍歷數組:

for($i = 1 ; $i < count($array) ; $i++) 
{ 
    if (isset($array[$i][ 2 ])) 
    { 
     $age = $array[$i][2]; 
     echo "Age: " . $age; 
    } 
} 
+0

它的工作原理,但不知何故,在過程中,我得到錯誤消息「未定義的偏移量2」 – jill182

+0

@ jill182聽起來就像你的csv文件中沒有年齡值的行。你能檢查它嗎? – tyb

+0

確定所有的行都有年齡值。其實我有200行,但是當我統計它包含200 ++。當我將csv轉換爲數組時,可能會出現錯誤? – jill182

0

如果我理解你的問題正確這應該這樣做:

for($i = 1; $i < sizeof($array); $i++) { 
    if(isset($array[$i][2])) { 
    $age = $array[$i][2]; 
    // Further use $age as you need it. 
    } 
} 
+0

it works bu不知何故,在過程中,我得到錯誤消息「未定義偏移量2」 – jill182

+0

也許你沒有爲某些人設定的年齡。我會更新我的答案以檢查年齡是否已設定。 – sticksu