php 数组去重

水光清浅 2017-04-14 04:06:05
怎么实现下面三种情况?
我想把这三种情况写成自定义函数, 方便以后调用

$list = array(
array("b"=>"a"),
array("a"=>"b"),
array("f"=>"h"),
array("f"=>"h"),
array("b"=>"z"),
array("u"=>"z")
);

1. 去除key 和 value 相同的选项,最后结果如下

$list = array(
array("b"=>"a"),
array("a"=>"b"),
array("b"=>"z"),
array("u"=>"z")
);

2.去除相同的key,最后结果如下

$list = array(
array("a"=>"b"),
array("u"=>"z")
);

3.去除相同的value,最后结果如下

$list = array(
array("b"=>"a"),
array("a"=>"b"),
);

...全文
224 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
水光清浅 2017-04-21
  • 打赏
  • 举报
回复
水光清浅 2017-04-20
  • 打赏
  • 举报
回复
水光清浅 2017-04-15
  • 打赏
  • 举报
回复
引用 1 楼 xuzuning 的回复:
可以怎么优化下?

function array_unique_double_zd($list, $type){
    $list2 = array();
    foreach($list as $v) {
        $key = '';
        switch ($type){
            case 'k' :
                $key = key($v);
                break;
            case 'v' :
                $key = current($v);
                break;
            case 'kv' :
                $key = sprintf('%s@%s', key($v), current($v));
                break;
        }
        if(!isset($list2[$key])) ;
        $list2[$key] = $v;
    }
    return array_values($list2);
}
xuzuning 2017-04-14
  • 打赏
  • 举报
回复
$list = array(
    array("b"=>"a"),
    array("a"=>"b"),
    array("f"=>"h"),
    array("f"=>"h"),
    array("b"=>"z"),
    array("u"=>"z")
);

//去除key 和 value 相同的选项
$res = array();
$st = array();
foreach($list as $v) {
  $k = sprintf('%s@%s', key($v), current($v));
  if(isset($res[$k])) $st[] = $k;
  else $res[$k] = $v;
}
foreach($st as $k) unset($res[$k]);
print_r(array_values($res));

Array
(
    [0] => Array
        (
            [b] => a
        )

    [1] => Array
        (
            [a] => b
        )

    [2] => Array
        (
            [b] => z
        )

    [3] => Array
        (
            [u] => z
        )

)
其他类同,只是 $k 取值不同而已 去除相同的key $k = key($v); 去除相同的value $k = current($v);

20,395

社区成员

发帖
与我相关
我的任务
社区描述
“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法利用了C、Java和Perl,该语言的主要目标是允许web开发人员快速编写动态网页。
phpphpstorm 技术论坛(原bbs)
社区管理员
  • 开源资源社区
  • phpstory
  • xuzuning
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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