使用 array_map 从数组中删除元素
Remove element from array using array_map
我使用 array_map 来验证每个数组元素。如果它没有通过验证,它应该从初始数组中删除:
$array = (123, 456);
$array = array_map(function ($e){
if( !is_numeric($e) ){
unset($e);
return; //this way i get a NULL element
}
$return $e;
}, $array);
OUTPUT: array(3) { [0]=> int(523) [1]=> int(555) [2]=> NULL }
当然,我可以在最后添加类似的内容:
$array = array_filter($array, 'strlen');
但是在 array_map 中没有办法做到这一点吗?
更新
关于这个题目,忘了说一个案例。如果一个元素没有通过验证,我想取消设置整个数组怎么办?这可以用 array_filter , array_map 或其他任何东西来完成吗?我不想用 for 等遍历数组。
我认为 array_map is not designed for your needs, because it's apply a callback for each element of your array. But array_filter 是 :
$array = array_filter($array, function($e) {
return is_numeric($e);
});
或更短:
$array = array_filter($array, 'is_numeric');
如果您想 return 在您的 array_map
中设置为 false,您可以应用 array_filter
来清理它。
$stores = [];
$array = array_map(function ($store) {
if ($true) {
return [
'name' => $store['name'],
];
} else {
return false;
}
}, $stores);
array_filter($array);
我使用 array_map 来验证每个数组元素。如果它没有通过验证,它应该从初始数组中删除:
$array = (123, 456);
$array = array_map(function ($e){
if( !is_numeric($e) ){
unset($e);
return; //this way i get a NULL element
}
$return $e;
}, $array);
OUTPUT: array(3) { [0]=> int(523) [1]=> int(555) [2]=> NULL }
当然,我可以在最后添加类似的内容:
$array = array_filter($array, 'strlen');
但是在 array_map 中没有办法做到这一点吗?
更新
关于这个题目,忘了说一个案例。如果一个元素没有通过验证,我想取消设置整个数组怎么办?这可以用 array_filter , array_map 或其他任何东西来完成吗?我不想用 for 等遍历数组。
我认为 array_map is not designed for your needs, because it's apply a callback for each element of your array. But array_filter 是 :
$array = array_filter($array, function($e) {
return is_numeric($e);
});
或更短:
$array = array_filter($array, 'is_numeric');
如果您想 return 在您的 array_map
中设置为 false,您可以应用 array_filter
来清理它。
$stores = [];
$array = array_map(function ($store) {
if ($true) {
return [
'name' => $store['name'],
];
} else {
return false;
}
}, $stores);
array_filter($array);