php 使用array_map从数组中移除元素

pkwftd7m  于 2022-12-25  发布在  PHP
关注(0)|答案(2)|浏览(224)

我使用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_filterarray_map或其他方法来完成吗?我不想用for等循环遍历数组。

7uhlpewt

7uhlpewt1#

我认为array_map不是为你的需要而设计的,因为它对数组的每个元素都应用了回调函数。

$array = array_filter($array, function($e) {
    return is_numeric($e);
});

或者更短:

$array = array_filter($array, 'is_numeric');
y1aodyip

y1aodyip2#

如果你想在array_map中返回false,你可以应用array_filter来清除它。

$stores = [];

$array = array_map(function ($store) {
    if ($true) {
        return [
            'name' => $store['name'],
        ];
    } else {
        return false;
    }
}, $stores);

array_filter($array);

相关问题