本文实例讲述了PHP中key和current,next的联合运用方法。分享给大家供大家参考,具体如下:
问题:
1
2
3
4
|
$arrq = array (); $arrq [ 'tuc' ] = array ( 'sss' => 'ewq' , 'shu' => 'sjkah' , 'saa' => 'dwjhaz' ); $arrq [ 'tucs' ] = array ( 'ssss' => 'ewsq' , 'sQhu' =>dwjhaz ',' sa12a '=>' dwjQhaz'); $arrq [ 'tuca' ] = array ( 'sssd' => 'ewqq' , 'shu2' => 'sjkah' , 'saSa' => 'dwjhhaz' ); |
如何在不破坏数组结构的情况下去除$arrq数组中的重复的值?
思路:先将第一个二维数组中的元素用array_unique函数输出。
输出第二个二维数组中的元素时,自己先用array_unique处理,再去掉在第一个二维数组中已经存在的元素。
输出第三个时,自己先用array_unique处理,再去掉在第一个和第二个二维数组合集中已经存在的元素。
以此类推。
总之,自己先要array_unqiue去重,再去掉自身中在前面所在数组元素合集中存在的元素。
以下为代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
<?php $arrq = array (); $arrq [ 'tuc' ] = array ( 'sss' => 'ewq' , 'shu' => 'sjkah' , 'saa' => 'dwjhaz' ); $arrq [ 'tucs' ] = array ( 'ssss' => 'ewsq' , 'sQhu' => 'dwjhaz' , 'sa12a' => 'dwjQhaz' ); $arrq [ 'tuca' ] = array ( 'sssd' => 'ewqq' , 'shu2' => 'sjkah' , 'saSa' => 'dwjhhaz' ); $last = array (); //设置一个空的用来比较的数组 while ( $arr =current( $arrq )) { //echo key($arrq); $tmp = array_unique ( $arr ); //先清除每个一维数组自身相同的值 if ( count ( $last )==0) { $last = array_merge ( $last , $arr ); //将已经去重的前面的数组合并 } else { // 对其余一维数组进行输出 //echo key($arrq); foreach ( $arr as $ke => $va ) { if (in_array( $arr [ $ke ], $last )) //如果已经存在的元素 unset( $arrq [key( $arrq )][ $ke ]); //删除,此处取得数组元素的KEY值是关键 } $last = array_merge ( $last , $arr ); //将$last变为前面数组的合集,用来进行下次比较 } next( $arrq ); //指针向后移,这样才能用key函数取得不同的$arrq的下标 } //以下输出处理后的数组 foreach ( $arrq as $arr ) { foreach ( $arr as $val ) { echo $val . " " ; } echo "<br>" ; } ?> |
运行结果为:
希望本文所述对大家PHP程序设计有所帮助。