PHP多维数组处理!删除重复元素!

Lee2K 2009-12-03 09:35:47
$arr=array('a-1,b-1,b-2,c-1');


如上面的那个数组.处理后的状态为

 a-1,b-1,c-1 


如各位所见,删除的条件是因为按逗号(,)分割的数组中,元素的第一个位(a,b,c).

因为元素[1]和元素[1]中的第一个子元素b相同,所以去除其中一个,当然,可以是后面的,也可以是前面的.

这处理方法类似于小型数据库.删除掉符合条件的重复元素.


我曾经想用两个数组$arr1和$arr2的方法.也有试过遍历的方法,array_unique的方法也试过.不过似乎不太理想...

请教各位有什么高见或思路.都可以说一下.答者有分!
...全文
385 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Lee2K 2009-12-05
  • 打赏
  • 举报
回复
感谢各位.我昨天已经思考到方法了.比较奇怪的方法.哈哈.用字符串处理函数配合数组处理函数完成了.
江南昆虫 2009-12-04
  • 打赏
  • 举报
回复

$arr = array('a-1,b-1,b-2,c-1');
$arr = explode(',',$arr[0]);
$tmparr = array();
foreach ($arr as $key => $val) {
$v = $val[0];//只用于单字母,如果aa-1,bb-1需分割为数组
if (in_array($v,$tmparr)) unset($arr[$key]);
$tmparr[] = $v;
}
$arr = implode(',',$arr);
var_dump($arr);
babysc1 2009-12-04
  • 打赏
  • 举报
回复
我到觉得如果array merage 不过只使用于2维数组
yctin 2009-12-04
  • 打赏
  • 举报
回复
$raw = array('a-1,b-1,b-2,c-1');
$result = process($raw[0]);
echo implode(',', $result);


function process($str) {
$output = array();
foreach(explode(',', $str) as $value) {
$output[$value{0}] = $value;
}
return $output;
}
xuzuning 2009-12-04
  • 打赏
  • 举报
回复
$arr=array('a-1,b-1,b-2,c-1');

function foo($s) {
$ar = split(',', $s);
$r = array();
foreach($ar as $v) {
list($a) = split('-', $v);
$r[$a] = $v;
}
return join(',', $r);
}

echo foo($arr[0]);


a-1,b-2,c-1
Lee2K 2009-12-03
  • 打赏
  • 举报
回复
楼上的朋友的方法有所启发.还有其他方法吗?
alandy 2009-12-03
  • 打赏
  • 举报
回复

function my_array_unique($from) {
for ($i=count($from)-1;$i>1;$i--) {
$last = $from[$i];
$from[$i] = false;
if (!in_array($last,$from)) {
$from[$i]=$last;
}
}
$from = array_unique($from);
$from = array_slice($from,0,count($from)-1);
return $from;
}
Lee2K 2009-12-03
  • 打赏
  • 举报
回复
上述,纠错一下. 因为元素[1]和元素[1]中的第一个子元素b相同这句改成元素[1]和元素[2]

21,891

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧