这是一个具有非数字值的数组示例。
$categoryRating =
array:3 [
1 => 60.0
2 => 50.0
5 => "in-progress"
]
结果应该是:
array:3 [
1 => 60.0
2 => 50.0
]
这是我的代码:
array_filter($categoryRating[$category->id]
但结果与未过滤的相同。
$category只是一个集合,我将 id 分配为过滤结果的新键。
这是一个具有非数字值的数组示例。
$categoryRating =
array:3 [
1 => 60.0
2 => 50.0
5 => "in-progress"
]
结果应该是:
array:3 [
1 => 60.0
2 => 50.0
]
这是我的代码:
array_filter($categoryRating[$category->id]
但结果与未过滤的相同。
$category只是一个集合,我将 id 分配为过滤结果的新键。
编辑:我包括了 Kevin 的 oneliner:
$array = [1 => 60.0, 2 => 50.0, 5 => 'in-progress'];
$array = array_filter($array, 'is_numeric');
var_dump($array);
您是否尝试过类似的方法:
array_filter($categoryRating, function($v, $k) {
return is_numeric($v);
}, ARRAY_FILTER_USE_BOTH));
它应该返回一个包含输入数组中所有数值的数组,但我还没有测试过。也许您只需要使用array_filter的 $callback 函数。
没有循环:
array_walk_recursive($categoryRating, function(&$value,$key){
$value = filter_var($value,FILTER_SANITIZE_NUMBER_INT);
});
循环在这里:
$categoryRating = [60.0,50.0,6.5,'in-progress'];
foreach ($categoryRating as $key => $val){
$categoryRating = array_filter($categoryRating, function($val){
return $val != is_string($val);
});
}
print_r($categoryRating);
如果数组中的数组:
$categoryRating =
array([
1 => 60.0,
2 => 50.0,
5 => "in-progress"
]);
foreach ($categoryRating as $key => $val) {
$categoryRating = array_filter($categoryRating[0], function ($val) {
return $val != is_string($val);
});
}
echo json_encode($categoryRating);