php 统计数组中每个元素的长度,然后删除长度等于2的元素。再变成新的数组,怎么实现?

lwz32138 发布于 2013/11/05 16:29
阅读 775
收藏 1
PHP
for($i=0;$i<count($arr);$i++)
                    {
                    if(mb_strlen($arr[$i],'utf-8')==2);
                    {
                    unset($arr[$i]);
                    }
                    echo  $arr[$i].'<br/>';
                    }
这样写不对,把全部删掉了。如何删除指定2的
加载中
0
leo108
leo108

如果是数字下标

$newArray = array();
foreach($array as $value){
    if(mb_strlen($value, 'utf-8') != 2){
       $newArray[] = $value;
    }
}
如果是关联数组

$newArray = array();
foreach($array as $key => $value){
    if(mb_strlen($value, 'utf-8') != 2){
       $newArray[$key] = $value;
    }
}

0
leo108
leo108

在for里面unset元素是危险的,特别是$i<count($arr)这样的

如果数据量不是很大的话,推荐新建一个数组,把长度不是2的放进去

l
lwz32138
如何做把数组元素不是2的放进去呢?请指点
0
mark35
mark35
如果是数字下标那么在循环中删除数组中元素容易引发问题
0
lazyphp
lazyphp
foreach($array as $key => $value){
    if(strlen($value) != 2){
       $newArray[] = $value;
    }
}
0
酒逍遥
酒逍遥

array_filter($arr, "f"));

function f($var){

return mb_strlen($var,'utf-8')==2;

}

苏生不惑
苏生不惑
发错了,怎么没法删除评论?
苏生不惑
苏生不惑
测了,这不可行
0
fxhover
fxhover
var_dump(array_filter($arr, create_function('$v', 'if (mb_strlen($v, "utf-8") != 2) return $v;')));

l
lwz32138
回调函数都给忘了,谢谢你.
返回顶部
顶部