在PHP中使用fgetcsv保持前导零

时间:2011-10-04 16:49:48

标签: php csv

我正在读一个.csv文件(我无法控制文件的格式),我正在尝试在结果数组中保留数据的前导零。例如,.csv文件在字段中具有“0615”,但结果数组包含“615”。 .csv文件中还有一些字段不包含前导零,因此在每个字段的开头添加零将不起作用。

我试图强制函数将字段作为字符串读取,但是爆炸,str_getcsv,fgetcsv都将其解析为整数并预先删除前导零。有什么想法吗?

编辑:问题已解决,最终成为.csv文件的问题。使用爆炸与fgets工作。

3 个答案:

答案 0 :(得分:1)

explode()以字符串为基础;您的类型转换必须在其他地方进行:

$data = "00555,00666,00777,00888";
$a = explode(",",$data);
foreach($a as $b) echo $b . " ";         // 00555 00666 00777 00888

如果PHP坚持将字符串解释为整数,则使用(string)$ b。

答案 1 :(得分:0)

使用str_pad将前导零添加到已解析的整数中,无论您需要它。


如果您熟悉它,请使用sprintf

$num = 1;
$num = sprintf('%04d', $num);
//               ^^
//               ||_ How many leading digits?
//               |_ Leading digit?
// output: 0001

答案 2 :(得分:0)

如果您需要前导零用于演示或统一格式化过程,那么在输出数字时简单地填充数字可能会更容易。

http://php.net/manual/en/function.str-pad.php应该在这里提供帮助。