Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在php中,如何删除数组中重复特定值的元素?_Php_Arrays - Fatal编程技术网

在php中,如何删除数组中重复特定值的元素?

在php中,如何删除数组中重复特定值的元素?,php,arrays,Php,Arrays,我有这样的数组: Array ( [0] => stdClass Object ( [model_id] => 1 [category_id] => 1 [model_name] => Xperia [category_name] => Mobile [category_image] => 81649e37620644

我有这样的数组:

Array
(
    [0] => stdClass Object
        (
            [model_id] => 1
            [category_id] => 1
            [model_name] => Xperia
            [category_name] => Mobile
            [category_image] => 81649e37620644bec47244fda5233363.jpg
            [item_type] => 1
        )

    [1] => stdClass Object
        (
            [model_id] => 3
            [category_id] => 1
            [model_name] => HTC One
            [category_name] => Mobile
            [category_image] => 250a3e4655454feaec8e2537d149846a.jpg
            [item_type] => 1
        )

    [2] => stdClass Object
        (
            [model_id] => 9
            [category_id] => 3
            [model_name] => Apple TV
            [category_name] => Televisions
            [category_image] => no_image.jpg
            [item_type] => 1
        )

    [3] => stdClass Object
        (
            [model_id] => 4
            [category_id] => 2
            [model_name] => MacBook
            [category_name] => Laptop
            [category_image] => c9890535d26bd06189fc22940a5ee5da.jpg
            [item_type] => 1
        )

    [4] => stdClass Object
        (
            [model_id] => 2
            [category_id] => 1
            [model_name] => iPhone 7
            [category_name] => Mobile
            [category_image] => cab0631b071d0562412ccab2279d391e.jpg
            [item_type] => 1
        )

    [5] => stdClass Object
        (
            [model_id] => 5
            [category_id] => 3
            [model_name] => Samsung TV
            [category_name] => Televisions
            [category_image] => e60bd4822e516a93f1e99a8b456b70ce.jpg
            [item_type] => 1
        )
)
如何删除重复出现
category\u id
item\u type
的元素?使用下面的代码,我只能删除任何单个值重复的元素

foreach($all_device_categories as $arr){
    if(!isset($result[$arr->category_id])){
        $result[$arr->category_id] = $arr;
    }
}

更新:
category\u id
以及
item\u type
不应同时重复。如果
category\u id
重复,但不重复
item\u type
,或者反之亦然,则没有问题。

用于多键匹配。您可以将这些键组合成数组键。试试这个:

foreach($all_device_categories as $arr){
    if(!isset($result[$arr->category_id.$arr->item_type])){
        $result[$arr->category_id.$arr->item_type] = $arr;
    }
}

用于多键匹配。您可以将这些键组合成数组键。试试这个:

foreach($all_device_categories as $arr){
    if(!isset($result[$arr->category_id.$arr->item_type])){
        $result[$arr->category_id.$arr->item_type] = $arr;
    }
}

由于如果
类别id
项目类型
重复,则只需存储一个值,因此需要使用一些其他字符将其合并,如:-。如果你不这样做,那么一些信息就会被遗漏

foreach($all_device_categories as $arr){
    $result[$arr->category_id.'-'.$arr->item_type] = $arr;        
}
我认为这将对您有所帮助,如果找到任何匹配项,这将始终采用更新数组值。如果您不想接受更新值,那么只需在存储新数组之前应用一个条件即可

foreach($all_device_categories as $arr){
    if(!isset($result[$arr->category_id.'-'.$arr->item_type])){
        $result[$arr->category_id.'-'.$arr->item_type] = $arr;
    }
}

第二个示例将只存储第一个匹配,如果重复出现,那么它将避免。

因为您只需要存储一个值,如果
category\u id
item\u type
都重复,那么您需要使用一些其他字符将它们合并,如:-。如果你不这样做,那么一些信息就会被遗漏

foreach($all_device_categories as $arr){
    $result[$arr->category_id.'-'.$arr->item_type] = $arr;        
}
我认为这将对您有所帮助,如果找到任何匹配项,这将始终采用更新数组值。如果您不想接受更新值,那么只需在存储新数组之前应用一个条件即可

foreach($all_device_categories as $arr){
    if(!isset($result[$arr->category_id.'-'.$arr->item_type])){
        $result[$arr->category_id.'-'.$arr->item_type] = $arr;
    }
}

第二个示例将只存储第一个匹配,如果重复出现,那么它将避免。

您真正想要的是什么?两个都重复?或者单个类别id或项目类型?所以您想匹配两个键?
类别id
&
项目类型
?@FrayneKonok查看我的更新。@RabinLama,选中。但混淆的是,如果一个类别id重复,而不是项目类型,那么该怎么办??你是说类别id和项目类型同时重复吗???@FrayneKonok再次看到我的更新。你真正想要的是什么?两个都重复?或者单个类别id或项目类型?所以您想匹配两个键?
类别id
&
项目类型
?@FrayneKonok查看我的更新。@RabinLama,选中。但混淆的是,如果一个类别id重复,而不是项目类型,那么该怎么办??您的意思是类别id和项目类型同时重复吗???@FrayneKonok再次查看我的更新。您的回答有一个错误,假设
类别id
为31,而
项目类型
为1,则它将第一次存储,再次说,
category\u id
是3,
item\u type
是11,那么在当前解决方案中会发生什么?您的答案有一个bug,假设
category\u id
是31,
item\u type
是1,那么它将第一次存储,再次说
category\u id
是3,
item\u type
是11,那么在当前解决方案中会发生什么呢?效果很好。谢谢你的时间和努力。效果很好。谢谢你的时间和努力。