目前我正在开展一个电子商务项目。我有足够的XML产品需要在电子商店上实现。
问题是我的XML解析器返回错误的值,例如:我有浮动32 000,00,它只解析我的php变量32。我正在解析的数字以某种方式除以千,我不知道为什么。与XML文件完全相同的代码有32 000个工作正常。它们是在初始化SimpleXML对象时需要设置的任何转换设置吗?
感谢帮助。
让我们看看这个
我有浮动32 000,00,它解析
不,你有一串"32 000, 00"
。因此,如果我们看看PHP如何键入杂耍
http://php.net/manual/en/language.types.type-juggling.php
我们看到一些这样的例子:
$foo = 5 * "10 Little Piggies"; // $foo is integer (50)
所以这两个乘以的值是50
或5*10
,这十个是从"10 Little Piggies"
解析的。 PHP将对上面的内容应用相同的规则,从而产生32
。因为它是一个字符串与那些spaces
PHP将完成几乎完全相同的方式。
你可以轻松测试这个:
echo floatval('32 000, 00');
产量
32
您可能必须手动将其转换为应该的内容。一件容易的事就是删除空格:
echo floatval(str_replace([' ',','], ['','.'], '32 000, 00'));
#output 32000
echo floatval(str_replace([' ',','], ['','.'], '32 290,01'));
#output 32290.01
如果我没记错的话,一些国家使用,
作为.
进行十进制分离。但我不得不用,
替换.
让它们工作......可能有一些边缘情况,这将无法工作,但没有更大的数据样本,我不能肯定地说。
那些空间在哪里或为什么在那里,我不知道。最好从XML中完全删除它们,但这可能是不可能的。
如果问题中没有一些实际的代码,那就是我能做的最好的。
干杯!