Php 字符串到Int应该抛出,而不是返回0
如果我使用Php 字符串到Int应该抛出,而不是返回0,php,casting,Php,Casting,如果我使用intval('string')或(int)'string' 如果该字符串包含数字以外的字母,则结果是int0 是否存在引发可捕获异常的方法,因此我可以检查转换是否成功,以便用户不会意外地输入1O,而不是10 还有一种检查浮动的方法吗?使用preg\u match(“/\D/”,“string”)就可以了。 此函数在字符串中查找某个模式,如果找到该模式,则返回true;如果没有找到,则返回false 分隔符\D检查非数字,如0和正斜杠用于打开和关闭分隔符部分 因此,当它找到一个非数字值
intval('string')
或(int)'string'
如果该字符串包含数字以外的字母,则结果是int0
是否存在引发可捕获异常的方法,因此我可以检查转换是否成功,以便用户不会意外地输入1O
,而不是10
还有一种检查浮动的方法吗?使用preg\u match(“/\D/”,“string”)
就可以了。
此函数在字符串中查找某个模式,如果找到该模式,则返回true;如果没有找到,则返回false
分隔符\D检查非数字,如0和正斜杠用于打开和关闭分隔符部分
因此,当它找到一个非数字值时将返回true,当它返回true时,您必须抛出一个错误或从程序中提前返回。如果为false,则一切正常对int进行强制转换不会产生错误。尽管这可以说是白痴。当然,您可以编写代码来检查字符串是否为数字,如果不是,则会引发错误。可能需要
trim()
该字符串来删除前导/尾随空格,因为它们也是“非数字”。我承认intval()的行为
在JS中是非常荒谬的。所以基本上你是在告诉我应该使用是数值($value)
?同样在setValue()
中你肯定是指$this->value=$value
而不是$this->值
如果您从未确定$this->value
是浮点值,为什么getValue()
会返回浮点值
。我可以只做(新号码('hi))->getValue()
,然后出现类型错误
class Number {
private $value;
public function __construct($value) {
$this->setValue($value);
}
public function getValue(): float {
return $this->value;
}
public function getIntValue(): int {
return intval($this->value);
}
public function setValue($value) {
if (!is_numeric($value)) {
throw new Exception("$value is not nummeric");
}
$this->value;
} }