2016-02-12 91 views
0

所以我目前已經創建了一個可以上傳和查看CSV表單的頁面。我已經在事情的上傳方面工作得很好,並且閱讀文檔等,但是如何從文檔中間選擇一個確切的信息平安?例如,我想知道我的第二個活動名稱的總流量。我將如何做到這一點?這是我目前的代碼。如何通過PHP從CSV文件中提取特定數據?

<?php 
$file = file('Uploads/uploadfile.csv'); 
$i = 0; 
foreach($file as $line){ 
if($i > 1) { 
list($activityid,$activitystatus,$wbscode,$wbsname,$activityname,$keymilestones,$originalduration,$remainingduration,$plannedstart,$plannedfinish,$totalfloat,$variancebl1startdate,)=explode(",", $line); 

echo "<h1>$activityname</h1>"; 
echo "<b>Activity ID: </b>$activityid<hr>"; 
echo "<b>WBS Code: </b>$wbscode<hr>"; 
echo "<b>WBS Name: </b>$wbsname<hr>"; 
echo "<b>Activity Status: </b>$activitystatus<hr>"; 
echo "<b>Key Milestones: </b>$keymilestones<hr>"; 
echo "<b>Original Duration: </b>$originalduration<hr>"; 
echo "<b>Remaining Duration: </b>$remainingsuration<hr>"; 
echo "<b>Planned Start: </b>$plannedstart<hr>"; 
echo "<b>Planned Finish: </b>$plannedfinish<hr>"; 
echo "<b>Total Float: </b>$totalfloat<hr>"; 
echo "<b>Variance B11 Start Date: </b>$variancebl1startdate<hr>"; 
} 
$i++; 
} 
?> 

謝謝。

+2

你認爲什麼是CSV文件的「中間」? //此外,在每個'',''爆炸CSV數據很容易導致錯誤的結果(如果任何值也包含逗號) - 使用適當的函數'fgetcsv'。 – CBroe

+0

中間我只是在文檔中的任何地方建議不一定是中間的確切部分。我使用的文件已經通過Primavera作爲XLS文件預先創建,然後通過excel轉換爲CSV,因此希望不應該有逗號問題。但是,如果您建議使用fgetcsv是一種更好的數據提取方式,那麼我很樂意改變它。我只是不顯示它會如何工作。 –

+0

'fgetcsv'是最好的選擇。此外,您還有'str_getcsv',它將CSV字符串解析爲數組。無論如何,這兩個函數都會返回一個數組,所以這只是一個從數組中檢索數據的問題,完全是另一個話題,即imo。如果你不知道如何去做,我建議你做一些關於PHP基礎知識的研究。 – Rein

回答

0

'explode(「,」,$ line);'返回一個數組。 您必須獲得一個數組,其中索引是來自csv的列中的名稱。 您可以新瀏覽此數組,以便使用索引名稱提取或查閱任何特定數據。

例如: 我是一個帶有名字,姓氏和電子郵件的.csv文件,供我的客戶使用。

/** 
* Store csv data to array 
* 
*/ 
$file_path = "customers.csv"; 
$file_content = file($file_path); 


/** 
* Store customers data with associative indexes 
* 
*/ 
$arr_data = array(); 
foreach ($file_content as $row) { 
    $arr_data[] = explode(',', trim($row)); 
} 

$arr_customers = array(); 
$first_row  = NULL; 
foreach ($arr_data as $row) { 

    //store content for first array -> FirstName, LastName, Email 
    if (! $first_row) { 
     $first_row = $row; 

    } else { 
     $arr_customers[] = array_combine($first_row, $row); 
    } 
} 


/** 
* Retrieve data 
* 
*/ 

//print email for all customers 
foreach ($arr_customers as $customer) { 
    echo $customer['Email'] . '<br>'; 
} 

//print name for second customer 
echo $arr_customers[1]['LastName'] . ', ' . $arr_customers[1]['FirstName'] . '<br>'; 
+0

我不太確定你的意思,請你進一步請進一步嗎? –

+0

我現在正在編輯它。 – Orici

+0

所以我試圖這樣做,但是,我改變回顯部分爲['WBS代碼']的電子郵件和['活動ID']姓氏和['活動名稱]像我的CSV文檔狀態。但是在運行時出現這樣的錯誤: –

相關問題