[英]Get array based on unique values within another array?
我有一个数组数组。 内部数组中的字段之一必须是唯一的,以便当我显示结果时,它仅显示唯一的条目。
array_unique可用,但看起来仅适用于一维数组。 我可能在遍历数组时可以进行比较操作,但这似乎是最不高效的方法。
数据存储在数据库中的方式(不是我的设计)很棘手,我将无法仅使用sql提取不同的结果。
有任何想法吗?
您可以轻松使用array_unique
和array_column
的组合
$records = array(
array(
'id' => 2135,
'first_name' => 'John',
'last_name' => 'Doe',
),
array(
'id' => 3245,
'first_name' => 'Sally',
'last_name' => 'Smith',
)
);
$ids = array_column($records, 'id');
$unique_ids = array_unique($ids);
然后以您认为合适的方式进行过滤
array_filter($records, function($row) use ($unique_ids) {
return in_array($row['id'], $unique_ids);
} );
编辑 :我想到它之后,该过滤器实际上不起作用,下面是一种稍微不同的方法:
array_filter($records, function($row) use ($unique_ids) {
$array_pos = array_search($row['id'], $unique_ids, true);
if($array_pos !== false) {
//need to remove it once used or it wont be unique
unset($unique_ids[$array_pos]);
}
return $array_pos !== false;
} );
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.