我有一個 CSV 文件,使一些 MySQL 變量易于閱讀,其中行中的第一項是 MySQL 字段名稱,第二項是要在字段中填寫的用戶友好名稱,如下所示:Hymn1,First Hymn,Hymn2,Second Hymn,date,Date,C2W,Call To Worship,然后,我將創建單獨的列表,以便教堂中的人們可以輸入與他們相關的數據 - 音樂總監將輸入國歌和奉獻的姓名、作者和歌詞等。我將使用 MySQL 變量名稱填充該列表,并從中生成頁面。我想將該 CSV 轉換為數組,以便生成一個頁面,該頁面將以用戶可讀的方式回顯字段標簽的字段名稱。我認為我的部分問題是 CSV 文件是橫向的。大多數答案都假設第一行是字段名稱,其余是內容,但這里的情況并非如此。如果這是 Python,我只會將它們壓縮到字典中,但在 PHP 中顯然你使用關聯數組。我打開 CSV 并將結果放入一個名為 的字符串中$keys,并回顯該字符串以驗證它是否如上所示,確實如此。然后我聲明了數組,去掉了換行符并將其替換為第二個逗號,然后用管道替換了第二個逗號:$assoc = array();$keys = str_replace("\r", ",", $keys);$keys = str_replace(",,", "|", $keys);之后,我將 $keys 字符串分解為一個新變量,并以管道作為分隔符。到目前為止,一切都很好。$newvar = explode("|", $keys);最后,我分解了數組中每個鍵中的每個逗號分隔項,并在 foreach 循環中將它們相互關聯。foreach($newvar as $iterator) {? ? $mini = explode(",", $iterator);? ? $mini[0] = ltrim($mini[0], "\n");? ? $assoc[$mini[0]] = $mini[1]; }print_r當我在我的陣列上做一個時$assoc,它給了我我所希望的一切。從源碼來看:Array(? ?[Hymn1] => First Hymn? ?[Hymn2] => Second Hymn? ?[date] => Date? ?[C2W] => Call to Worship)但是 - 這就是問題部分 - 當我嘗試使用 or 訪問數組中的各個元素時,echo $assoc['Hymn1'];我echo $assoc->Hymn1;什么也沒得到。我可以回顯“Hello World”,它會出現,但沒有任何結果。我也嘗試過 str_getcsv,但它只創建每個逗號分隔項目的數組,或者與此數組類似的數組,當我嘗試回顯每個項目時,最終不會打印任何內容。
1 回答

慕村225694
TA貢獻1880條經驗 獲得超4個贊
您可以通過兩種方式訪問數據:使用字段名稱或用戶友好版本。
此代碼讀取文件并在讀取文件時創建兩個數組。 $variables是使用Hymn1值作為鍵,$names使用First Hymn值作為鍵。
$variables = [];
$names= [];
$fh = fopen($fileName, "r");
while ( $row = fgetcsv($fh)) {
$variables [$row[0]] = $row[1];
$names [$row[1]] = $row[0];
}
fclose($fh);
print_r($variables);
print_r($names);
- 1 回答
- 0 關注
- 133 瀏覽
添加回答
舉報
0/150
提交
取消