トリスタン:
私はトラブルこの問題をデバッグを持っています(JSから来る)PHPに非常に新しいです。
私は、インポートされている.csv
HTMLテーブルにレンダリングするために、私はテーブルを注文することができますので、列を取得しようとしています。テーブルには、5つの見出し(日付、TransactionNumber、CustomerNumberの、リファレンス、金額)が含まれています。私は除いて、すべての値を取得することができますDate
列。それはちょうど空の値を返します。
<?php
$rows = array_map('str_getcsv', file('BankTransactions.csv'));
$header = array_shift($rows);
$csv = array();
foreach ($rows as $row) {
$csv[] = array_combine($header, $row);
}
print_r($csv[0]['Date']);
print_r("\n")
?>
// .csv
Date,TransactionNumber,CustomerNumber,Reference,Amount
2016-12-10 1:54PM,NUF5V6PT3U,5156,Purchase at JB HiFi,-2498
2016-12-4 4:54AM,J82964EFPS,2347,Refund,5424
2016-12-12 5:25PM,ZUFBQGCKTK,5683,Fee Refund,254
2016-12-01 12:00AM,XHNCASYLBR,2347,Purchase at Coles,-8873
2016-11-23 10:34PM,S98EBHDWG3,3423,Wages,198700
2017-09-23 9:34AM,MPNQYKVJ3G,4657,Purchase at Chemist Warehouse,-584
2015-11-23 10:34PM,74CQKEGSHB,2173,Refund,-3514
2015-11-23 10:35PM,WPTJMNVH4U,4527,Purchase at Hungry Monkey,45245
2017-01-01 12:00AM,U6BD3M75FD,7577,Interest,2778
// Array received from `.csv`
Array
(
[0] => Array
(
[Date] => 2016-12-10 1:54PM
[TransactionNumber] => NUF5V6PT3U
[CustomerNumber] => 5156
[Reference] => Purchase at JB HiFi
[Amount] => -2498
)
[1] => Array
(
[Date] => 2016-12-4 4:54AM
[TransactionNumber] => J82964EFPS
[CustomerNumber] => 2347
[Reference] => Refund
[Amount] => 5424
)
[2] => Array
(
[Date] => 2016-12-12 5:25PM
[TransactionNumber] => ZUFBQGCKTK
[CustomerNumber] => 5683
[Reference] => Fee Refund
[Amount] => 254
)
[3] => Array
(
[Date] => 2016-12-01 12:00AM
[TransactionNumber] => XHNCASYLBR
[CustomerNumber] => 2347
[Reference] => Purchase at Coles
[Amount] => -8873
)
[4] => Array
(
[Date] => 2016-11-23 10:34PM
[TransactionNumber] => S98EBHDWG3
[CustomerNumber] => 3423
[Reference] => Wages
[Amount] => 198700
)
[5] => Array
(
[Date] => 2017-09-23 9:34AM
[TransactionNumber] => MPNQYKVJ3G
[CustomerNumber] => 4657
[Reference] => Purchase at Chemist Warehouse
[Amount] => -584
)
[6] => Array
(
[Date] => 2015-11-23 10:34PM
[TransactionNumber] => 74CQKEGSHB
[CustomerNumber] => 2173
[Reference] => Refund
[Amount] => -3514
)
[7] => Array
(
[Date] => 2015-11-23 10:35PM
[TransactionNumber] => WPTJMNVH4U
[CustomerNumber] => 4527
[Reference] => Purchase at Hungry Monkey
[Amount] => 45245
)
[8] => Array
(
[Date] => 2017-01-01 12:00AM
[TransactionNumber] => U6BD3M75FD
[CustomerNumber] => 7577
[Reference] => Interest
[Amount] => 2778
)
)
CBroe:
あなたのCSVファイルはおそらくUTF-8でエンコードされて BOM、バイトオーダーマーク。
ファイルを読み込む際に、PHPは(まだ)が正しくのBOMを処理していないので、あなたがファイルから読み込ま非常に最初の行は、まだ開始時に、それが含まれていますし、最初の列の値、そのためにも、まだそれが含まれています。中にあなたの鍵だから$csv
配列は、実際にはないDate
、しかし[BOM]Date
、しかし、あなたがしますprint_r出力にそれが表示されない(BOMは、それ自体が、実際に「可視」ではありません。)
参照してください。複数のUTF-8 BOMの配列を除去する方法やhttps://gist.github.com/chrisguitarguy/6096271を BOMを削除する方法を提案するために。