【问题标题】:preg_grep does not return the right resultspreg_grep 没有返回正确的结果
【发布时间】:2018-09-06 18:04:33
【问题描述】:

以下代码未捕获 45.00 作为结果:

$array = array(50,45.00,34,56,6.67);
$fl_array = preg_grep("/^(\d+)?\.(\d)+$/", $array);

有什么建议吗?

【问题讨论】:

  • 你接受的输出是什么?
  • 只有浮动数字
  • 试试"/^(\d+)?[\.(\d)+]?$/"

标签: php preg-grep


【解决方案1】:

如果您执行var_dump($array);,您将获得:

array(5) {
  [0]=> int(50)
  [1]=> float(45)
  [2]=> int(34)
  [3]=> int(56)
  [4]=> float(6.67)
}

PHP 你将45.00 转换为45。这就是为什么您无法使用正则表达式找到的原因。

你可以做的是只插入字符串。

$array = array("50","45.00","34","56","6.67");

那么它就可以工作了。

另一种选择是只过滤数组中的浮点数:

$array = array(50,45.00,34,56,6.67);
$fl_array = array_filter($array, function($item) {
    return is_float($item);
});

【讨论】:

    猜你喜欢
    • 2023-03-14
    • 2014-09-13
    • 2012-08-01
    • 2014-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-09
    • 2017-11-24
    相关资源
    最近更新 更多