php 一个2维数组中有对象,怎么过滤多个数组中重复数据,整合为一个数组(里有对象及数据)

Array([0]=>Array([0]=>.[1]=>..[2]=>20061101185433.png[3]=>stdClassObject([id]=>1[nav]... Array
(
[0] => Array
(
[0] => .
[1] => ..
[2] => 20061101185433.png
[3] => stdClass Object
(
[id] => 1
[nav] => 12
[pic] => 20061101358017.jpg
)

[4] => 20061101438014.jpg
[5] => 20061101481056.jpg
[6] => 20061101481856.jpg
[7] => 20061101642602.jpg
[8] => 20061101930722.jpeg
)

[1] => Array
(
[0] => .
[1] => ..
[2] => 20061101185433.png
[3] => 20061101358017.jpg
[4] => 20061101438014.jpg
[5] => 20061101481056.jpg
[6] => 20061101481856.jpg
[7] => 20061101642602.jpg
[8] => 20061101930722.jpeg
)

[2] => Array
(
[0] => .
[1] => ..
[2] => 20061101185433.png
[3] => 20061101358017.jpg
[4] => 20061101438014.jpg
[5] => 20061101481056.jpg
[6] => 20061101481856.jpg
[7] => 20061101642602.jpg
[8] => 20061101930722.jpeg
)

[3] => Array
(
[0] => .
[1] => ..
[2] => stdClass Object
(
[id] => 5
[pic] => 20061101185433.png
)

[3] => 20061101358017.jpg
[4] => stdClass Object
(
[id] => 2
[pic] => 20061101438014.jpg
)

[5] => 20061101481056.jpg
[6] => stdClass Object
(
[id] => 3
[pic] => 20061101481856.jpg
)

[7] => stdClass Object
(
[id] => 1
[pic] => 20061101642602.jpg
)

[8] => stdClass Object
(
[id] => 4
[pic] => 20061101930722.jpeg
)

)
}
展开
 我来答
金翅鸟06
2014-01-07
知道答主
回答量:16
采纳率:0%
帮助的人:9.4万
展开全部
先将所有数据放到一个数组里

$arr_new_str =Array();//放字符串的数组
$arr_new_obj = Array();//放对象的数组
foreach( $arr_old as $arr_in ){
foreach( $arr_in as $value){
//双重遍历,开始 将字符串和对象分开
if( $value instanceof stdClass )
{ //所有对象
$arr_new_obj[] =$value;
}else {//所有字符串
$arr_new_str[]=$value;
}
}
}

//array_unique()函数,我不清楚能不能排除对象,所以我又分了一次
$arr_new= array_unique( $arr_new_str );

//验证对象
$count = count( $arr_new_obj);
for( $i=0;$i<$count;$i++){
//得到对象数组的第一个值,
for($j=$i+1;$j<$count;$j++){
//将第一个对象和其他值比较,
if( $arr_new_obj[ i ] == $arr_new_obj[ j ] ){
//相等,就将第一个删除;依次类推
unset( $arr_new_obj[ i ] );
}
}
}
//最后得到的就是没有相同对象的新数组

//和并两个数组;
$array_new = array_merge( $arr_new ,$arr_new_obj );
//array_merge() 函数把两个或多个数组合并为一个数组。

//如果键名有重复,该键的键值为最后一个键名对应的值(后面的覆盖前面的)。如果数组是数
//字索引的,则键名会以连续方式重新索引。

这个题,我认为 难在如何判断两个对象是否相等,我也是,百度了一下,才知道的,请楼主也学习一下;

我的方法比较长,我看一楼 用到的 递归,水准比我高多了,学习了
qwqwqqwcom123
2014-01-07 · TA获得超过1163个赞
知道小有建树答主
回答量:256
采纳率:0%
帮助的人:137万
展开全部
<?phpfunction arrayChange($array){static $arr2=array(); foreach($array as $v) { if(is_array($v)) { arrayChange($v); }else{ $arr2[]=$v; } } $arr2=array_unique($arr2); return $arr2;}
$arr=arrayChange($array);var_dump($arr);?>
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式