如果数组有重复项,则键的空值

我有这个数组


    Array

(

    [0] => Array

        (

            [user_id] => 78

            [post_id] => 3

            [post_user_added_id] => 2

        )


    [1] => Array

        (

            [user_id] => 76

            [post_id] => 3

            [post_user_added_id] => 16

        )


    [2] => Array

        (

            [user_id] => 78

            [post_id] => 3

            [post_user_added_id] => 12

        )


    [3] => Array

        (

            [user_id] => 76

            [post_id] => 9

            [post_user_added_id] => 15

        )


     [4] => Array

         (

             [user_id] => 77

             [post_id] => 9

             [post_user_added_id] => 15

         )

我想要做的是如果密钥post_id重复我只想清空它并保留一个所以我的最终数组将如下所示


 Array

(

    [0] => Array

        (

            [user_id] => 78

            [post_id] => 3

            [post_user_added_id] => 2

        )


    [1] => Array

        (

            [user_id] => 76

            [post_id] => 

            [post_user_added_id] => 16

        )


    [2] => Array

        (

            [user_id] => 78

            [post_id] => 

            [post_user_added_id] => 12

        )


    [3] => Array

        (

            [user_id] => 76

            [post_id] => 9

            [post_user_added_id] => 15

        )


     [4] => Array

         (

             [user_id] => 77

             [post_id] => 

             [post_user_added_id] => 15

         )

我已经尝试过这段代码,但它似乎不起作用它删除了整个数组


                           foreach($arry as $k => $v)

                            {

                                foreach($arry as $key => $value)

                                {

                                    if($k != $key && $v['post_id'] == $value['post_id'])

                                    {

                                        unset($arry [$k]);

                                    }

                                }

                            }

                            print_r($arry);


青春有我
浏览 85回答 4
4回答

繁星点点滴滴

您可以foreach与ternary操作员一起执行$last = null;//this will keep the previous post_idforeach($arr as &$v){ ($last && $last == $v['post_id']) ? ($v['post_id'] = '') : ($last = $v['post_id']);}print_r($arr);工作示例:- https://3v4l.org/RiU9J

开心每一天1111

使用您的数组值而不是 $arr 并尝试像以下代码一样过滤数组:&nbsp;$arr = array(&nbsp; &nbsp; &nbsp; &nbsp; array(&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'user_id'=>15,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'post_id'=>3,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'post_user_added_id'=>2&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ),&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; array(&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'user_id'=>16,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'post_id'=>3,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'post_user_added_id'=>2&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ),&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;array(&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'user_id'=>18,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'post_id'=>3,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'post_user_added_id'=>2&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ),&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;array(&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'user_id'=>18,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'post_id'=>3,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'post_user_added_id'=>2&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ),&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;array(&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'user_id'=>16,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'post_id'=>3,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'post_user_added_id'=>2&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ),&nbsp; &nbsp; );&nbsp; &nbsp; $postids = array();&nbsp; &nbsp; foreach($arr as $key=>$val){&nbsp; &nbsp; &nbsp; &nbsp; if(in_array($val['post_id'], $postids)){&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $arr[$key]['post_id'] = '';&nbsp; &nbsp; &nbsp; &nbsp; }else{&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $postids[] = $val['post_id'];&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }&nbsp; &nbsp; echo "<pre>";print_r($arr);exit;&nbsp; &nbsp;&nbsp;输出 :Array(&nbsp; &nbsp; [0] => Array&nbsp; &nbsp; &nbsp; &nbsp; (&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [user_id] => 15&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [post_id] => 3&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [post_user_added_id] => 2&nbsp; &nbsp; &nbsp; &nbsp; )&nbsp; &nbsp; [1] => Array&nbsp; &nbsp; &nbsp; &nbsp; (&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [user_id] => 16&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [post_id] =>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [post_user_added_id] => 2&nbsp; &nbsp; &nbsp; &nbsp; )&nbsp; &nbsp; [2] => Array&nbsp; &nbsp; &nbsp; &nbsp; (&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [user_id] => 18&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [post_id] =>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [post_user_added_id] => 2&nbsp; &nbsp; &nbsp; &nbsp; )&nbsp; &nbsp; [3] => Array&nbsp; &nbsp; &nbsp; &nbsp; (&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [user_id] => 18&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [post_id] =>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [post_user_added_id] => 2&nbsp; &nbsp; &nbsp; &nbsp; )&nbsp; &nbsp; [4] => Array&nbsp; &nbsp; &nbsp; &nbsp; (&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [user_id] => 16&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [post_id] =>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [post_user_added_id] => 2&nbsp; &nbsp; &nbsp; &nbsp; ))

子衿沉夜

尝试这个 :// example code$arrayResult = array();$arry = [&nbsp; &nbsp; 1 =>&nbsp; &nbsp; &nbsp; &nbsp; [&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'user_id' => 78,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'post_id' => 3,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'post_user_added_id' => 2&nbsp; &nbsp; &nbsp; &nbsp; ],&nbsp; &nbsp; 2=>&nbsp; &nbsp; &nbsp; &nbsp; [&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'user_id' => 76,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'post_id' => 3,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'post_user_added_id' => 16&nbsp; &nbsp; &nbsp; &nbsp; ],&nbsp; &nbsp; 3 =>&nbsp; &nbsp; &nbsp; &nbsp; [&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'user_id' => 78,&nbsp; &nbsp; &nbsp; &nbsp; 'post_id' => 3,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'post_user_added_id' => 12&nbsp; &nbsp; &nbsp; &nbsp; ],&nbsp; &nbsp; 4 =>&nbsp; &nbsp; &nbsp; &nbsp; [&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'user_id' => 76,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'post_id' => 9,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'post_user_added_id' => 15&nbsp; &nbsp; &nbsp; &nbsp; ],&nbsp; &nbsp; &nbsp;5 =>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'user_id' => 77,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'post_id' => 9,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'post_user_added_id' => 15&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;]];$final = array();foreach($arry as $a){&nbsp; &nbsp; if (in_array($a['post_id'], $arrayResult)) {&nbsp; &nbsp; &nbsp; &nbsp; $a['post_id'] = 0;&nbsp; &nbsp; }else{&nbsp; &nbsp; &nbsp; &nbsp; $arrayResult[] = $a['post_id'];&nbsp; &nbsp; }&nbsp; &nbsp; $final[] = $a;}var_dump($final);

慕田峪7331174

在这里试试这个。$tempArr = [];$resArr = [];foreach($orignalArr as $key=>$obj){&nbsp; &nbsp; if(in_array($obj['post_id'], $tempArr)){&nbsp; &nbsp; &nbsp; &nbsp; $obj['post_id'] = '';&nbsp; &nbsp; &nbsp; &nbsp; $resArr[] = $obj;&nbsp; &nbsp; }else{&nbsp; &nbsp; &nbsp; &nbsp; $tempArr[] = $obj['post_id'];&nbsp; &nbsp; &nbsp; &nbsp; $resArr[] = $obj;&nbsp; &nbsp; }}print_r($resArr);
打开App,查看更多内容
随时随地看视频慕课网APP