我正在用两列(ID,DATE)读取CSV文件。我想要身份证,用它做些什么,但我得到的是真的很奇怪。对于第一行,我得到"3“,在转换成整数后,得到0。当然,我已经打印了值,"3“的长度是4. WTF?我只是累了还是出了什么问题?第二行按预期工作。
CSV文件:
3;2017-11-24 08:30:00+01
2;2017-10-20 09:00:00+02代码:
if (($handle = fopen(__DIR__ . "/myfile.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 0, ";")) !== FALSE) {
var_dump($data);
var_dump($data[0]);
var_dump(mb_strlen($data[0]));
var_dump(gettype($data[0]));
var_dump((int) $data[0]);
}
fclose($handle);
}输出:
array(2) {
[0] =>
string(4) "3"
[1] =>
string(22) "2017-11-24 08:30:00+01"
}
string(4) "3"
int(2)
string(6) "string"
int(0)
---------------------------
array(2) {
[0] =>
string(1) "2"
[1] =>
string(22) "2017-10-20 09:00:00+02"
}
string(1) "2"
int(1)
string(6) "string"
int(2)编辑:
当我改变行的顺序时,它总是只做第一行。BOM?
发布于 2019-05-10 08:58:01
好的,问题是编码。在从ISO-8859-1转换为UTF-8后,工作正常.仍然奇怪的是,PHP将数组键定义为长度为4的"3“,并在转换到int之后返回0。
https://stackoverflow.com/questions/56073559
复制相似问题