如何在数组中删除超过15个字符的所有元素

时间:2014-01-06 17:39:10

标签: php

我想在数组中删除(这是一个非常大的数组)所有超过15个字符的元素。这样做的最佳方式(性能)是什么?

5 个答案:

答案 0 :(得分:1)

怎么样:

foreach($arr as $key => $val)
{
    if(strlen($val) > 15)
    {
        unset($arr[$key]);
    }
}

array_values($arr);

答案 1 :(得分:1)

array_filter()与回调函数一起使用:

$new = array_filter($array, function($elem) {
    return strlen($elem) <= 15;
});

使用普通foreach循环也可以这样做:

foreach ($array as $key => $value) {
    if (strlen($value) > 15) {
        unset($array[$key]);
    }
}

答案 2 :(得分:0)

通过算法方面来看这个问题,你肯定必须通过数组并检查数组中字符的大小。如果size大于15,则必须删除该元素。未排序数组的最小复杂度为O(n)= n。你应该给我们一些你正在使用的代码和语言。

答案 3 :(得分:0)

我会选择:

$filteredArray = array_filter($array, function($item){

  return strlen($item) < 15;

});

答案 4 :(得分:0)

DEMO LIVE:https://eval.in/86391

我已经完成了2D阵列。

<?php
$arr = array(0=>array(0=>"1111111111","1"=>"22222222222222222"),array(0=>"111111111111111111",1=>"14554545454"));
echo "BEFORE";
print_r($arr);
for($j =0; $j < count($arr);$j++){
 foreach($arr[$j] as $k => $v){
     if( strlen($arr[$j][$k]) > 15){
       unset($arr[$j][$k]);
     }
 }
}

echo "AFTER";
print_r($arr);

对于1D数组:

$arr2 = array(0=>"1111111111","1"=>"22222222222222222");
echo "BEFORE";
print_r($arr2);
 foreach($arr2 as $k => $v){
     if( strlen($arr2[$k]) > 15){
       unset($arr2[$k]);
     }

}

echo "AFTER";
print_r($arr2);