$a=array(5000){
[0] => array(2) {
["one"] => string(2) "zhang"
["two"] => string(13) "lili"
}
[1] => array(2) {
["one"] => string(2) "zhang"
["two"] => string(13) "lili"
}
[2] => array(2) {
["one"] => string(2) "wang"
["two"] => string(13) "lili"
}
[3] => array(2) {
["one"] => string(2) "zhang"
["two"] => string(13) "lulu"
}
[4] => array(2) {
["one"] => string(2) "zhang"
["two"] => string(13) "lili"
}
.......
}数组如上,想去掉重复的如
[1] => array(2) {
["one"] => string(2) "zhang"
["two"] => string(13) "lili"
}
[4] => array(2) {
["one"] => string(2) "zhang"
["two"] => string(13) "lili"
}和[0]重复都是要删除的,
有什么高效的方法,因为数据较多,需要考虑效率!
[0] => array(2) {
["one"] => string(2) "zhang"
["two"] => string(13) "lili"
}
[1] => array(2) {
["one"] => string(2) "zhang"
["two"] => string(13) "lili"
}
[2] => array(2) {
["one"] => string(2) "wang"
["two"] => string(13) "lili"
}
[3] => array(2) {
["one"] => string(2) "zhang"
["two"] => string(13) "lulu"
}
[4] => array(2) {
["one"] => string(2) "zhang"
["two"] => string(13) "lili"
}
.......
}数组如上,想去掉重复的如
[1] => array(2) {
["one"] => string(2) "zhang"
["two"] => string(13) "lili"
}
[4] => array(2) {
["one"] => string(2) "zhang"
["two"] => string(13) "lili"
}和[0]重复都是要删除的,
有什么高效的方法,因为数据较多,需要考虑效率!
$newarr = array();
foreach ($array as $arr)
{
if (isset($newarr[$arr['name']]))
{
$newarr[$arr['name']]['num'] += $arr['num'];
}
else
{
$newarr[$arr['name']] = $arr;
}
}
$newarr = array_values($newarr); // 如果键名不需要为数字可以去掉这句
用这个试试,你自己改一下
array( 'one' => "zhang ", 'two' => "lili "),
array( 'one' => "zhang ", 'two' => "lili "),
array( 'one' => "wang ", 'two' => "lili "),
array( 'one' => "zhang ", 'two' => "lulu "),
array( 'one' => "zhang ", 'two' => "lili "),
);
// array_map 回调函数
function foo($v) {
return join(',', $v);
}$p = array_map('foo', $a); //将二维数组转换为一维数组
$t = array_intersect(array_unique($p), $p);
$k = array_diff(array_keys($p), array_keys($t));foreach($k as $i) unset($a[$i]);在我的服务器中测试,$a平均每个元素的处理时间为 16 微秒左右
得到的是N个数组的不同元素
楼主只要循环判断大数组的子数组就可以了
以前的array_unique是不能用的,因为比较的时候是转化为string比较,楼主的情况会全部相等(因为都是
'Array')
但是现在(>5.2.9)array_unique加了一个参数,如果设为SORT_REGULAR,是会做一般意义上(不转化为string的比较的),因此楼主的情况是可以直接用的