我有一个包含多行的CSV文件,每行有超过50个值,所有值均用'|'分隔我想将每个这些值存储到数组中。 我第一行将所有值毫无问题地放入数组,但是其余的行则通过单个键传递到数组中,换句话说,其余的行不会分解为这50多个值。 我已经尝试过PHP read CSV file line by lines。
这就是我需要的:
Array
(
[0] => Array
(
[0] => SALE
[1] => FF
[2] => 17750478
[3] => 235
[4] => 2018-01-27T22:16:56
[5] => 2018-05-13T12:06:11
[6] =>
)
[1] => Array
(
[0] => SALE
[1] => FF
[2] => 10423478
[3] => 1006352300
[4] => 2018-01-27T22:16:56
[5] => 2018-05-13T12:06:11
[6] =>
)
[2] => Array
(
[0] => SALE
[1] => FF
[2] => 1204578
[3] => 1002362300
[4] => 2018-01-27T22:16:56
[5] => 2018-05-13T12:06:11
[6] =>
)
)
但是我得到了:
Array
(
[0] => Array
(
[0] => SALE
[1] => FF
[2] => 17750478
[3] => 235
[4] => 2018-01-27T22:16:56
[5] => 2018-05-13T12:06:11
[6] =>
)
[1] => Array
(
[0] => SALE|FF|10423478|1006352300|2018-01-27T22:16:56|2018-05-13T12:06:11........
我做了一个测试,我取出了仅剩下的8和9值,数组终于达到了我想要的值,但是我的文件每行有50多个值。打破每一行的值是否有限制? 我的代码:
$OrderLines = array();
$file = fopen($InboundInno.$ACKFile, 'r');
while (($line = fgetcsv($file, false, '|' )) !== FALSE) {
$OrderLines[] = $line;
}
fclose($file);
EDIT 我已经注意到,第一行的最后一个值(唯一一个逐个获得所有值的行)在最后一个值中得到一个“。”该循环在第一条车道的最后一个值上添加了一个“。” >
答案 0 :(得分:1)
好吧,我明白了。
我不知道为什么,但是此代码向我文件的每一行的末尾添加了"
,就像我之前说的那样。当然,我用外壳($line = fgetcsv($file, 0, '|', ' " ')
做了一个测试,什么也没做。
由于我绝望,所以我倒转了机箱,做了($line = fgetcsv($file, 0, '|', " ' ")
,它可以正常工作。
我不知道为什么PHP会将'当作'对待,但现在可以了。所以希望它能对处于相同情况的任何人有所帮助。这是完整的代码:
while (($line = fgetcsv($file, 0, '|', "'")) !== FALSE) {
$OrderLines[] = $line;
}
fclose($file);
答案 1 :(得分:0)
我正在使用类似的方法读取CSV文件:
request.Headers.Add("Authorization", "Basic " + Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes($"api_key***************:")));