【问题标题】:Get datatype of input variable in the command line Php在命令行 Php 中获取输入变量的数据类型
【发布时间】:2018-03-01 08:11:06
【问题描述】:

这是我的代码。

$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 我得到的是字符串

【问题讨论】:

  • 来自标准输入的所有内容都是字符串。另外,你的问题是什么?
  • 您提前知道您可以收到哪些可能的类型吗?
  • 例如,如果 $input 只有数字,那么我需要找到该变量只包含整数。假设它是否有浮点值,那么我需要检查它是否是浮点数
  • 使用ctype_函数。

标签: php php-7 php-7.2


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-06
    • 2012-09-09
    • 2012-05-29
    • 1970-01-01
    • 1970-01-01
    • 2014-09-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多