V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
cnqncom
V2EX  ›  PHP

二维数组比较的问题?

  •  
  •   cnqncom · 2018-05-04 17:41:03 +08:00 · 1622 次点击
    这是一个创建于 2176 天前的主题,其中的信息可能已经有所发展或是发生改变。
    $data = [
    ['foo' => 'bar', 'x' => 'foo'],
    ['foo' => 'bar1', 'x' => 'foo1'],
    ['foo' => 'bar', 'x' => 'foo2']
    ];

    我需要把这个数组中的 foo 重复的数组删除,只保留下来一条就行。怎么做?

    $data = [
    ['foo' => 'bar', 'x' => 'foo'],
    ['foo' => 'bar1', 'x' => 'foo1'],
    ];
    2 条回复    2018-05-15 11:13:58 +08:00
    cnqncom
        1
    cnqncom  
    OP
       2018-05-04 21:29:10 +08:00
    $arr = array_merge($labels,$label);
    //合并需要合并的俩个数组
    $key = id;//去重条件
    $tmp_arr = array();//声明数组
    foreach($arr as $k => $v)
    {
    if(in_array($v[$key], $tmp_arr))
    //搜索$v[$key]是否在$tmp_arr 数组中存在,若存在返回 true
    {
    unset($arr[$k]);
    //删除掉数组($arr )里相同 ID 的数组
    }
    else {
    $tmp_arr[] = $v[$key];
    //记录已有的 id
    }
    }
    dump($arr);
    airdge
        2
    airdge  
       2018-05-15 11:13:58 +08:00
    用 array_column 提取 foo 作为新数组,新数组去重,获取相应键值就可以了

    <?php

    class str
    {
    public static $data = [
    [
    'foo' => 'bar',
    'x' => 'foo',
    ],
    [
    'foo' => 'bar1',
    'x' => 'foo1',
    ],
    [
    'foo' => 'bar',
    'x' => 'foo2',
    ],
    [
    'foo' => 'bar2',
    'x' => 'foo2',
    ],
    [
    'foo' => 'bar2',
    'x' => 'foo1',
    ],
    [
    'foo' => 'bar3',
    'x' => 'foo4',
    ],
    ];
    public static function a() {
    return array_map("self::b", array_keys(array_unique(array_column(self::$data, 'foo'))));
    }
    public static function b($a) {
    return self::$data[$a];
    }
    }

    print_r(str::a());



    Array
    (
    [0] => Array
    (
    [foo] => bar
    [x] => foo
    )

    [1] => Array
    (
    [foo] => bar1
    [x] => foo1
    )

    [2] => Array
    (
    [foo] => bar2
    [x] => foo2
    )

    [3] => Array
    (
    [foo] => bar3
    [x] => foo4
    )

    )
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5222 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 08:03 · PVG 16:03 · LAX 01:03 · JFK 04:03
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.