0

这是我的代码。

$fr = fopen("php://stdin", "r");
$input = fgets($fr);


if (preg_match('/^-?[0-9]{1,4}$/', $input)) {
    echo "Integer.";
} else if (preg_match('/^[-+]?[0-9]*\.?[0-9]+$/', $input)) {
    echo "Float.";
} else if (preg_match('/[a-zA-Z\s]^[0-9]/', $input)) {
    echo "string.";
}

我将从$input输入的命令行获取变量。我需要找到变量是 int、float、string 的数据类型。

尝试了gettype()方法,但它始终是字符串。所以只尝试了preg_match.

虽然在这我也没有得到正确的输出。

例如:1.2e3 我得到了字符串

4

1 回答 1

0

来自命令行(或任何管道)的所有输入将始终是一个字符串,因为不支持其他类型。您要弄清楚的是您的字符串是否为数字,然后将其转换为数字:

if (is_numeric($input)) {
    $input = +$input;
}

一元运算+符将导致字符串被解释为数字并产生 anintfloat

于 2018-03-01T08:17:21.767 回答