preg_grep没有返回正确的结果

时间:2018-09-06 18:04:33

标签: php preg-grep

以下代码不会捕获45.00:

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

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

如果您执行var_dump($array);,则会得到:

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

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

您只能插入字符串。

$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);
});