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
)
)
} 展开
(
[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
)
)
} 展开
2个回答
展开全部
先将所有数据放到一个数组里
$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() 函数把两个或多个数组合并为一个数组。
//如果键名有重复,该键的键值为最后一个键名对应的值(后面的覆盖前面的)。如果数组是数
//字索引的,则键名会以连续方式重新索引。
这个题,我认为 难在如何判断两个对象是否相等,我也是,百度了一下,才知道的,请楼主也学习一下;
我的方法比较长,我看一楼 用到的 递归,水准比我高多了,学习了
$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() 函数把两个或多个数组合并为一个数组。
//如果键名有重复,该键的键值为最后一个键名对应的值(后面的覆盖前面的)。如果数组是数
//字索引的,则键名会以连续方式重新索引。
这个题,我认为 难在如何判断两个对象是否相等,我也是,百度了一下,才知道的,请楼主也学习一下;
我的方法比较长,我看一楼 用到的 递归,水准比我高多了,学习了
展开全部
<?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);?>
$arr=arrayChange($array);var_dump($arr);?>
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询