编程语言
首页 > 编程语言> > php – 如何根据特定值从关联数组中删除重复值?

php – 如何根据特定值从关联数组中删除重复值?

作者:互联网

我有一个看起来像这样的数组:

array(3) { ["fk_article_id"]=> string(1) "4" ["first_name"]=> string(6) "Ulrike" ["last_name"]=> string(10) "Grasberger" }

array(3) { ["fk_article_id"]=> string(1) "9" ["first_name"]=> string(5) "Frank" ["last_name"]=> string(9) "Neubacher" }

array(3) { ["fk_article_id"]=> string(3) "896" ["first_name"]=> string(2) "D." ["last_name"]=> string(5) "Bauer" }

array(3) { ["fk_article_id"]=> string(3) "896" ["first_name"]=> string(2) "S." ["last_name"]=> string(6) "Anders" }

array(3) { ["fk_article_id"]=> string(3) "896" ["first_name"]=> string(2) "M." ["last_name"]=> string(6) "Tsokos" }

array(3) { ["fk_article_id"]=> string(3) "897" ["first_name"]=> string(8) "Reinhard" ["last_name"]=> string(8) "Scholzen" }

现在我想做的是摆脱重复的“fk_article_id”值“896”,这样只留下第一个:

array(3) { ["fk_article_id"]=> string(3) "896" ["first_name"]=> string(2) "D." ["last_name"]=> string(5) "Bauer" }

我现在是array_unique()但我没有发现告诉函数只使用“fk_article_id”ID中的值的可能性.

我怎样才能做到这一点?

编辑:

它是三列db表的输出:

$authors_result = pg_query($query_authors) or trigger_error("An error occurred.<br/>" . mysql_error() . "<br />SQL-Statements: {$searchSQL}");

while ($row = pg_fetch_assoc($authors_result)) {
var_dump($row);
}

解决方法:

使用array_reduce的快速方法如下:

$unique = array_reduce($subject, function($final, $article){
    static $seen = array();
    if ( ! array_key_exists($article['fk_article_id'], $seen)) {
        $seen[$article['fk_article_id']] = NULL;
        $final[] = $article;
    }
    return $final;
});

试试a working example.

编辑:似乎您不想使用汇总结果.以下是另外两个想法:

用PHP过滤

$seen = array();
while ($row = pg_fetch_assoc($authors_result)) {
    // Skip this row if we have already seen its article id
    if (array_key_exists($row['fk_article_id'], $seen)) {
        continue;
    }
    // Note that we have seen this article
    $seen[$row['fk_article_id']] = NULL;
    // Do whatever with your row
    var_dump($row);
}

在DB中过滤

这里的想法是更改正在执行的查询,以便重复的文章ID不会出现在结果集中.如何完成这将取决于您已经使用的查询.

标签:associative,php,arrays,unique
来源: https://codeday.me/bug/20191002/1842031.html