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

Php 如何删除数组中超过15个字符的所有元素,php,Php,我想删除一个数组(这是一个非常大的数组)中超过15个字符的所有元素。(在性能方面)最好的方法是什么?从算法的角度来看这个问题,您肯定必须遍历数组并检查数组中字符的大小。如果大小大于15,则必须删除该元素。在未排序的数组中,最小复杂度为O(n)=n。您应该给我们一些您正在使用的代码和语言。怎么样: foreach($arr as $key => $val) { if(strlen($val) > 15) { unset($arr[$key]);

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

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

怎么样:

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

array_values($arr);
与回调函数一起使用:

$new = array_filter($array, function($elem) {
    return strlen($elem) <= 15;
});
我只想说:

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

  return strlen($item) < 15;

});
$filteredArray=array\u filter($array,function($item){
返回strlen($item)<15;
});
现场演示:

我已经做了二维阵列

<?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);

添加你的数组的样本数据关于数组_filter和简单foreach之间的性能如何?unset?@user3154581你可以测量你自己:))语言是PHP,检查标记。你可以明确说明。上面的代码可能会告诉你,你可能没有看到,但我之前发布了一条:)哦,对不起,我们是在同一时刻写的!
<?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);
$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);