由于Magento在PHP中使用(int)
类型转换,我生命中浪费了3个小时。公平地说,类型转换对他们来说不仅仅是公平的......似乎是翻译的意外行为破坏了我的下午。
$sString = '123 Sesame Street';
$iNumber = (int)$sString;
var_dump($iNumber); // int(123)
这是故意的吗?显然它可以预先通过is_numeric
检查,但是真的吗?
答案 0 :(得分:3)
您期望结果是什么? (int)完全按预期工作。
如果您想阅读它所说的PHP manual documentation:
该值由字符串的初始部分给出。 如果是字符串 从有效的数字数据开始,这将是使用的值。 否则,该值将为0(零)。有效的数字数据是 可选符号,后跟一个或多个数字(可选地包含一个 小数点),后跟可选的指数。指数是一个 'e'或'E'后跟一个或多个数字。
Emphesis mine
因为这是PHP类型杂耍的基本实现,我怀疑问题不在于Magento的类型处理,而在于你自己对类型处理能力的解释。您可以采用更好的Magento方法来获得更准确的响应。
我建议使用以下伪代码来解决您的问题:
if((string)$sString != (int)$sString) {
//This string is not a number or not only a number.
}