gpt4 book ai didi

php - 无法转换为来自 .csv 文件的整数

转载 作者:行者123 更新时间:2023-12-04 20:41:15 25 4
gpt4 key购买 nike

我将 .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"

最佳答案

一种解决方案是使用 mbstring 转换从 CSV 文件读取的字符串的编码。模块。

首先读取文件:

$reportData = [];
$file = fopen('DailyReport.csv', 'r');
while(!feof($file)) {
$reportData[] = fgetcsv($file, NULL, '|');
}

您的 var_dump(bin2hex(...))输出表明 DailyReport.csv 是 UTF-16BE。 (每个数字有两个字节,前导字节始终为零。尾随零字节建议使用 UTF-16LE。)

让我们使用 mbstring 将这些大端 UTF-16 字符串转换为 UTF-8。 ,然后到整数:
foreach($reportData as $res) {
$resUTF8 = mb_convert_encoding($res[0], 'UTF-8', 'UTF-16BE');
$resInt = intval($resUTF8);
echo $resInt, PHP_EOL; // <- we have actual integers here
}

这里一个可能的缺点是 mbstring默认情况下可能未启用模块...或者,我们可以使用 iconv ,但有时可能有点反复无常。

关于php - 无法转换为来自 .csv 文件的整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32999061/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com