【问题标题】:Is it possible to create a ternary operator for this statement in PHP?是否可以在 PHP 中为此语句创建三元运算符?
【发布时间】:2011-02-02 17:42:25
【问题描述】:
    function integer($str)
    {
        if(preg_match('/[^0-9]/', $str)) 
        { 
           return FALSE;
        }

        else
        {
           return $str;
        }
    }

是否可以在 PHP 中为这条语句创建一个三元运算符?

【问题讨论】:

  • 如果这不是一个学习练习,我推荐内置 is_int 函数:php.net/manual/en/function.is-int.php
  • @SimpleCoder 只检查类型,不检查内容——is_int("4") 返回 false。
  • @lonesomeday:谢谢,我是说is_numeric

标签: php ternary-operator


【解决方案1】:

是的:

function integer($str) {
  return (preg_match('/[^0-9]/', $str) ? false : $str);
}

【讨论】:

  • $str = "" 应该返回 "" ?
  • @salathe - 只是解决 OP 的问题,而不是批评他的代码/流程。
【解决方案2】:

您应该为此使用ctype_digit

function integer($str) {
    return ctype_digit($str) ? $str : false;
}

或将filter_varFILTER_VALIDATE_INT 一起使用:

function integer($str) {
    return filter_var($str, FILTER_VALIDATE_INT, array(
        'options' => array('min_range' => 0),
        'flags' => FILTER_FLAG_ALLOW_OCTAL
    ));
}

【讨论】:

  • filter_var 可以选择配置为允许最小值和最大值,因此您也可以将其限制为仅正整数。
  • @Gordon:可以指定min_range吗?
  • @Gordon,回复。八进制,请参见 FILTER_FLAG_ALLOW_OCTAL 标志。
  • @salathe:我认为通常不允许使用八进制数。
  • @nikic,一个合理的假设。我只是提醒 Gordon(和读者)过滤器可以选择性地允许八进制整数。
猜你喜欢
  • 2015-08-04
  • 1970-01-01
  • 2015-10-13
  • 1970-01-01
  • 1970-01-01
  • 2019-10-08
  • 2021-10-06
  • 1970-01-01
  • 2011-01-13
相关资源
最近更新 更多