Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在逗号处将终止字符串类型转换为int_Php_String_Preg Replace_Int - Fatal编程技术网

Php 在逗号处将终止字符串类型转换为int

Php 在逗号处将终止字符串类型转换为int,php,string,preg-replace,int,Php,String,Preg Replace,Int,所以我的问题是php没有正确地转换这些类型。。我需要找出一种比数字3更好的方法,如果有的话,我真的很想知道为什么PHP把逗号当作句点之类的东西 $cost = "7,800.00"; // "7,800.00" $cost = (int) "7,800.00" // int(7) $cost = (int) preg_replace('/[^-0-9\.]/i', '', "7,800.00"); // int(7800) 编辑,让那些不读书的人明白:我正在寻找一种更优雅的方式来做这件事。至于

所以我的问题是php没有正确地转换这些类型。。我需要找出一种比数字3更好的方法,如果有的话,我真的很想知道为什么PHP把逗号当作句点之类的东西

$cost = "7,800.00"; // "7,800.00"
$cost = (int) "7,800.00" // int(7)
$cost = (int) preg_replace('/[^-0-9\.]/i', '', "7,800.00"); // int(7800)

编辑,让那些不读书的人明白:我正在寻找一种更优雅的方式来做这件事。至于这种行为存在的原因,我已经得到了我想要的解释。谢谢。

PHP不知道如何处理分组字符(在本例中为逗号),因为它不是用于求幂的数字字符、句点或
e
。因此,当读取第一个不相关的字符时,函数停止解析


第二,看看PHP提供的数字函数:我不相信逗号没有int值,可能是货币格式?money_format()您是否考虑过只删除字符串中的逗号?逗号使它们变得模棱两可,因为它们在某些国家是小数点字符,而在其他国家则不是。你为什么不想做?只需将其包装在函数中以供重用。问题是什么?在这个问题上没有问题可能是重复的没有问题,阿杰雷尔。我正试图了解php为什么会这样工作,Dan Grossman对此有一个非常完美的答案。我不喜欢我的第三种选择,因为它看起来并不像它可能的那么优雅,然而,我想如果没有更简单的方法,我可以接受它。