以下代码不会捕获45.00:
$array = array(50,45.00,34,56,6.67);
$fl_array = preg_grep("/^(\d+)?\.(\d)+$/", $array);
有什么建议吗?
答案 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);
});