<?php
$number1 = 1;
$number2 = 0;
$number3 = $number1/$number2 ;
Run Code Online (Sandbox Code Playgroud)
$ number3将返回float(INF),这是可以的。
var_dump($number3 );
Run Code Online (Sandbox Code Playgroud)
为了识别INF,我可以使用is_infinite,如下所示。
$check_Is_INF = is_infinite($number3);
Run Code Online (Sandbox Code Playgroud)
上面的$ check_Is_INF将返回true-可以。
var_dump($check_Is_INF );
Run Code Online (Sandbox Code Playgroud)
但是,如果我检查以下字符串,为什么总是返回TRUE:592e5399,如下所示
$number3 = '592e5399';
$check_Is_INF = is_infinite($number3);
var_dump($check_Is_INF );
Run Code Online (Sandbox Code Playgroud)
就像is_infinite的文档中一样:
如果val是无限的(正数或负数),例如log(0)的结果或任何太大而无法放入该平台上的float的值,则返回TRUE 。
该数字592e5399在符号表达式中(因为e它包含在内),因此它是一个非常大的数字,超出了浮点数限制。因此,它将被视为无穷大。
精确地,该e方法^的数目将为592 ^ 5399。
关于变量类型的注释$number3:
您将其设置为String,但是由于PHP的Type Juggling,您在表达式中使用的每个值都将根据上下文的上下文来假定类型。在这种情况下,因为函数is_infinite需要一个数字,所以将字符串转换为数字。