php nextkey,PHP中key和current,next的联合运用实例分析

这篇文章主要介绍了PHP中key和current,next的联合运用,结合实例形式分析了key和current,next操作数组元素的相关技巧,需要的朋友可以参考下

本文实例讲述了PHP中key和current,next的联合运用方法。分享给大家供大家参考,具体如下:

问题:

$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去重,再去掉自身中在前面所在数组元素合集中存在的元素。

以下为代码:

$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 "
";

}

?>

运行结果为:

be8a27e73d164c2661e2b67b77ef2443.png

希望本文所述对大家PHP程序设计有所帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值