从数组中删除重复的项目

lau*_*kok 25 php arrays duplicates array-unique

我使用下面的代码行循环遍历数据库中的表:

$items_thread = $connection -> fetch_all($sql);
Run Code Online (Sandbox Code Playgroud)

如果我打印出阵列:

print_r($items_thread);
Run Code Online (Sandbox Code Playgroud)

我会得到这个:

Array
(
    [0] => Array
        (
            [RecipientID] => 3
            [RecipientScreenname] => Tom L
            [RecipientFirstname] => Thomas
            [RecipientEmail] => info@xx.com
        )

    [1] => Array
        (
            [RecipientID] => 3
            [RecipientScreenname] => Tom L
            [RecipientFirstname] => Thomas
            [RecipientEmail] => info@xx.com
        )

    [2] => Array
        (
            [RecipientID] => 1
            [RecipientScreenname] => Lau T
            [RecipientFirstname] => TK
            [RecipientEmail] => lau@xx.co.uk
        )

)
Run Code Online (Sandbox Code Playgroud)

但我想摆脱数组中的重复项,所以我使用 array_unique

print_r(array_unique($items_thread));
Run Code Online (Sandbox Code Playgroud)

我得到了下面的奇怪结果,这不是我想要的:

Array
(
    [0] => Array
        (
            [RecipientID] => 3
            [RecipientScreenname] => Tom L
            [RecipientFirstname] => Thomas
            [RecipientEmail] => info@xx.com
        )

)
Run Code Online (Sandbox Code Playgroud)

理想情况下,我认为它应该返回:

Array
(
    [0] => Array
        (
            [RecipientID] => 3
            [RecipientScreenname] => Tom L
            [RecipientFirstname] => Thomas
            [RecipientEmail] => info@xx.com
        )

    [1] => Array
        (
            [RecipientID] => 1
            [RecipientScreenname] => Lau T
            [RecipientFirstname] => TK
            [RecipientEmail] => lau@xx.co.uk
        )

)
Run Code Online (Sandbox Code Playgroud)

我该怎么做才能做到对?我使用了错误的PHP语法/默认函数吗?

Tim*_*per 66

array_unique功能将为您完成此操作.你只需要添加SORT_REGULAR标志:

$items_thread = array_unique($items_thread, SORT_REGULAR);
Run Code Online (Sandbox Code Playgroud)

但是,正如bren建议的那样,如果可能的话,你应该在SQL中这样做.


小智 6

过滤掉SQL查询中的重复项会更好.添加一个获取UNIQUE recipientID的约束

  • `SELECT DISTINCT RecipientID ...` (3认同)