本文实例讲述了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程序设计有所帮助。