二维数组比较的问题?

2018-05-04 17:41:03 +08:00
 cnqncom
$data = [
['foo' => 'bar', 'x' => 'foo'],
['foo' => 'bar1', 'x' => 'foo1'],
['foo' => 'bar', 'x' => 'foo2']
];

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

$data = [
['foo' => 'bar', 'x' => 'foo'],
['foo' => 'bar1', 'x' => 'foo1'],
];
1741 次点击
所在节点    PHP
2 条回复
cnqncom
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
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
)

)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/452182

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX