根据另一个数组中的唯一值获取数组?

时间:2016-06-13 14:30:53

标签: php arrays sorting

我有一个数组数组。内部数组中的一个字段需要是唯一的,这样当我显示结果时它只显示唯一的条目。

array_unique可用,但它看起来只适用于单维数组。我可以在迭代数组时进行比较操作,但这似乎是效率最低的方法。

数据存储在数据库中的方式(不是我的设计)很棘手,我无法使用sql提取不同的结果。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您可以轻松使用array_uniquearray_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;
} );