<small id='nTd17'></small><noframes id='nTd17'>

  1. <i id='nTd17'><tr id='nTd17'><dt id='nTd17'><q id='nTd17'><span id='nTd17'><b id='nTd17'><form id='nTd17'><ins id='nTd17'></ins><ul id='nTd17'></ul><sub id='nTd17'></sub></form><legend id='nTd17'></legend><bdo id='nTd17'><pre id='nTd17'><center id='nTd17'></center></pre></bdo></b><th id='nTd17'></th></span></q></dt></tr></i><div id='nTd17'><tfoot id='nTd17'></tfoot><dl id='nTd17'><fieldset id='nTd17'></fieldset></dl></div>
    <tfoot id='nTd17'></tfoot>
  2. <legend id='nTd17'><style id='nTd17'><dir id='nTd17'><q id='nTd17'></q></dir></style></legend>
      <bdo id='nTd17'></bdo><ul id='nTd17'></ul>

      如何从多维数组中删除重复值?

      时间:2023-11-30
        <bdo id='6Wlm6'></bdo><ul id='6Wlm6'></ul>

          <tfoot id='6Wlm6'></tfoot>
            <tbody id='6Wlm6'></tbody>
              <i id='6Wlm6'><tr id='6Wlm6'><dt id='6Wlm6'><q id='6Wlm6'><span id='6Wlm6'><b id='6Wlm6'><form id='6Wlm6'><ins id='6Wlm6'></ins><ul id='6Wlm6'></ul><sub id='6Wlm6'></sub></form><legend id='6Wlm6'></legend><bdo id='6Wlm6'><pre id='6Wlm6'><center id='6Wlm6'></center></pre></bdo></b><th id='6Wlm6'></th></span></q></dt></tr></i><div id='6Wlm6'><tfoot id='6Wlm6'></tfoot><dl id='6Wlm6'><fieldset id='6Wlm6'></fieldset></dl></div>
            • <small id='6Wlm6'></small><noframes id='6Wlm6'>

                <legend id='6Wlm6'><style id='6Wlm6'><dir id='6Wlm6'><q id='6Wlm6'></q></dir></style></legend>
              • 本文介绍了如何从多维数组中删除重复值?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                问题描述

                我有来自两个单独的 mysql 查询的数组数据.数组数据如下所示:

                I have array data from two separate mysql queries. Array data looks like below:

                0
                :
                {user_id: 82, ac_type: 1,…}
                1
                :
                {user_id: 80, ac_type: 5,…}
                2
                :
                {user_id: 76, ac_type: 1,…}
                3
                :
                {user_id: 82, ac_type: 1,…}
                4
                :
                {user_id: 80, ac_type: 5,…}
                

                我想删除重复的数组项.

                I want to remove the duplicate array items.

                所以,我的输出会是这样的:

                So, my output will be like this:

                0
                :
                {user_id: 82, ac_type: 1,…}
                1
                :
                {user_id: 80, ac_type: 5,…}
                2
                :
                {user_id: 76, ac_type: 1,…}
                

                我想通过 user_id 检查重复.

                I want to check duplicate by user_id.

                我尝试了以下解决方案,但都没有按预期工作.

                I have tried the following solutions, but neither are not working as desired.

                $input = array_unique($res, SORT_REGULAR);

                $input = array_map("unserialize", array_unique(array_map("serialize", $res)));

                下面我也试过了.

                $results = array();
                
                foreach ($res as $k => $v) {
                        $results[implode($v)] = $v;
                }
                
                $results = array_values($results);
                print_r($results);
                

                但仍然存在重复数据.

                推荐答案

                此任务不需要任何自定义函数调用.只需使用 array_column() 为每个子数组分配新的临时键,然后重新索引子数组并打印到屏幕上.*这确实会用较晚的事件覆盖较早的事件.

                You don't need any custom function calls for this task. Just use array_column() to assign new temporary keys to each subarray, then reindex the subarrays and print to screen. *this does overwrite earlier occurrences with later ones.

                代码:(演示)

                $array=[
                    ['user_id'=>82,'ac_type'=>1],
                    ['user_id'=>80,'ac_type'=>5],
                    ['user_id'=>76,'ac_type'=>1],
                    ['user_id'=>82,'ac_type'=>2],
                    ['user_id'=>80,'ac_type'=>6]
                ];
                var_export(array_values(array_column($array,NULL,'user_id')));
                

                输出:

                array (
                  0 => 
                  array (
                    'user_id' => 82,
                    'ac_type' => 2,
                  ),
                  1 => 
                  array (
                    'user_id' => 80,
                    'ac_type' => 6,
                  ),
                  2 => 
                  array (
                    'user_id' => 76,
                    'ac_type' => 1,
                  ),
                )
                

                <小时>

                如果您想保留第一次出现并忽略所有后续重复项,则可以这样做:


                If you want to keep the first occurrences and ignore all subsequent duplicates, this will do:

                代码:(Demo)(* 保留第一次出现)

                Code: (Demo) (* this keeps the first occurrences)

                $array=[
                    ['user_id'=>82,'ac_type'=>1],
                    ['user_id'=>80,'ac_type'=>5],
                    ['user_id'=>76,'ac_type'=>1],
                    ['user_id'=>82,'ac_type'=>2],
                    ['user_id'=>80,'ac_type'=>6]
                ];
                
                foreach($array as $a){
                    if(!isset($result[$a['user_id']])){
                        $result[$a['user_id']]=$a;      // only store first occurence of user_id
                    }
                }
                var_export(array_values($result));  // re-index
                

                输出:

                array (
                  0 => 
                  array (
                    'user_id' => 82,
                    'ac_type' => 1,
                  ),
                  1 => 
                  array (
                    'user_id' => 80,
                    'ac_type' => 5,
                  ),
                  2 => 
                  array (
                    'user_id' => 76,
                    'ac_type' => 1,
                  ),
                )
                

                <小时>

                如果您不介意丢失子数组的顺序,可以使用 array_reverse()array_column() 来使用临时键保留第一次出现,然后使用 array_values() 重新索引:


                If you don't mind losing the order of your subarrays, you can use array_reverse() with array_column() to retain the first occurrences using temporary keys, then use array_values() to re-index:

                var_export(array_values(array_column(array_reverse($array),NULL,'user_id')));
                /*
                array (
                  0 => 
                  array (
                    'user_id' => 76,
                    'ac_type' => 1,
                  ),
                  1 => 
                  array (
                    'user_id' => 82,
                    'ac_type' => 1,
                  ),
                  2 => 
                  array (
                    'user_id' => 80,
                    'ac_type' => 5,
                  ),
                )
                */
                

                这篇关于如何从多维数组中删除重复值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                上一篇:Dropzone js - 从同一页面拖放文件 下一篇:考虑到 Gmail (user.name+label@gmail.com),如何在 PHP 中检查重复的电子邮件地址

                相关文章

                1. <i id='nwLxF'><tr id='nwLxF'><dt id='nwLxF'><q id='nwLxF'><span id='nwLxF'><b id='nwLxF'><form id='nwLxF'><ins id='nwLxF'></ins><ul id='nwLxF'></ul><sub id='nwLxF'></sub></form><legend id='nwLxF'></legend><bdo id='nwLxF'><pre id='nwLxF'><center id='nwLxF'></center></pre></bdo></b><th id='nwLxF'></th></span></q></dt></tr></i><div id='nwLxF'><tfoot id='nwLxF'></tfoot><dl id='nwLxF'><fieldset id='nwLxF'></fieldset></dl></div>
                2. <legend id='nwLxF'><style id='nwLxF'><dir id='nwLxF'><q id='nwLxF'></q></dir></style></legend>
                    <tfoot id='nwLxF'></tfoot>

                    <small id='nwLxF'></small><noframes id='nwLxF'>

                      <bdo id='nwLxF'></bdo><ul id='nwLxF'></ul>