【发布时间】:2016-01-05 02:06:59
【问题描述】:
我将 .csv 文件中的数据放入数组中,但数字以字符串形式出现。当我尝试将它们转换回整数时,它们变为0。我用来从 .csv 文件中获取数据的代码:
$reportData = [];
$file = fopen('DailyReport.csv','r');
while(!feof($file)){
$reportData[] = fgetcsv($file,NULL,'|');
}
我尝试使用以下方法转换数字:
foreach($reportData as $res){
$int[] = intval($res[0]);
//or
$int[] = (int)$res[0];
//or even
$int[] = $res[0]*1;
这些都不起作用,有什么想法吗?
$res[0] 的值始终是整数。当我运行var_dump($res[0]); 时,结果是:
string(15) "1437961"
string(15) "1437971"
string(15) "1438127"
string(15) "1440392"
string(15) "1440394"
string(15) "1440399"
string(15) "1440924"
string(15) "1440986"
而 var_dump(bin2hex($res[0])) 返回:
string(30) "003100340033003700390036003100"
string(30) "003100340033003700390037003100"
string(30) "003100340033003800310032003700"
string(30) "003100340034003000330039003200"
string(30) "003100340034003000330039003400"
string(30) "003100340034003000330039003900"
string(30) "003100340034003000390032003400"
string(30) "003100340034003000390038003600"
【问题讨论】:
-
请
var_dump($res[0])告诉我们结果。 -
很可能您将非数字字符串转换为整数,尽管您认为自己是。
-
我把var_dump($res[0])的结果放上去,可以看到值都是整数
-
看到了吗?你那里有字符串。但我确信这不是全部真相。请输出
var_dump(bin2hex($res[0]));以显示是否有隐藏字符可能会干扰您的整数转换 -
string(15) "1437961".... 我只计算 7 个可见字符....这是双字节编码吗?