我使用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);
输出:数组(3){[ 0]=〉整数(523)[1]=〉整数(555)[2]=〉空}
当然,我可以在最后加上这样的话:
$array = array_filter($array, 'strlen');
但是,在array_map
中有没有办法做到这一点呢?
- 更新**
关于这个主题,我忘了提到一个案例。如果我想在一个元素没有通过验证的情况下取消设置整个数组,该怎么办?可以用array_filter
、array_map
或其他方法来完成吗?我不想用for等循环遍历数组。
2条答案
按热度按时间7uhlpewt1#
我认为array_map不是为你的需要而设计的,因为它对数组的每个元素都应用了回调函数。
或者更短:
y1aodyip2#
如果你想在
array_map
中返回false,你可以应用array_filter
来清除它。