我有以下数组
array:3 [
0 => array:3 [
0 => "EN"
1 => "ENGLISH"
2 => 1
]
1 => array:3 [
0 => "JA"
1 => "JAPANESE"
2 => 1
]
2 => array:3 [
0 => "JA"
1 => "JAPANESE"
2 => 0
]
]
我想删除重复项,但只检查键 0 和 1 。
当我使用array_unique()
时,它不起作用。
我期望的结果是
array:2 [
0 => array:3 [
0 => "EN"
1 => "ENGLISH"
2 => 1
]
1 => array:3 [
0 => "JA"
1 => "JAPANESE"
2 => 1
]
]
删除了最后一个数组,因为它具有相同的 JA 和 JAPANESE ,并且 1 的数据仍然存在。
提前致谢。
答案 0 :(得分:0)
使用集合,您可以通过
执行此操作// using collection
$collection = collect([ ["EN", "ENGLISH", 1],["JP", "JAPAN", 1], ["JP", "JAPAN", 1] ]);
// then filtering the value
$filtered = $collection->filter(function ($value, $key) {
return $value[2] == 1;
});
// then unique only by the acronym ( en , jp )
$unique = $filtered->unique(0);
// you may also add the 2nd value to determine it's uniqueness
$unique = $filtered->unique(function ($item) {
return $item[0].$item[1];
});
// getting all the uniqued values
$unique->values()->all();
答案 1 :(得分:0)
您使用唯一索引作为键,
$result = [];
foreach($array as $v)
{
$result[$v[0] . $v[1]] = $v;
}
$result = array_values($result);