Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.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应该抛出,而不是返回0_Php_Casting - Fatal编程技术网

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;
} }