【问题标题】:How to remove the parent numeric keys of php array如何删除php数组的父数字键
【发布时间】:2014-03-21 10:38:32
【问题描述】:

我在 php 中有一个数组,如下所示

Array
(
    [0] => Array
        (
            [0] => 40173
            [1] => 514081
            [2] => 363885
            [3] => 891382
        ),
    [1] => Array
        (
            [0] => 40173
            [1] => 5181
            [2] => 385
            [3] => 891382
        )

)

现在我想删除父索引 0,1... 最后想获取所有值(只有唯一值)。

谢谢。

【问题讨论】:

    标签: php arrays array-unique


    【解决方案1】:

    一种可能的方法是使用call_user_func_array('array_merge', $arr) idiom 来展平数组,然后使用array_unique() 提取唯一值:

    $new_arr = array_unique(
      call_user_func_array('array_merge', $old_arr));
    

    Demo。显然,它适用于任何长度的数组。

    【讨论】:

      【解决方案2】:
      $startArray = Array
      (
      [0] => Array
          (
              [0] => 40173
              [1] => 514081
              [2] => 363885
              [3] => 891382
          ),
      [1] => Array
          (
              [0] => 40173
              [1] => 5181
              [2] => 385
              [3] => 891382
          )
      
      );
      //Edited to handle more the 2 subarrays
      $finalArray = array();
      
      foreach($startArray as $tmpArray){
          $finalArray = array_merge($finalArray, $tmpArray);
      }
      
      $finalArray = array_unique($finalArray);
      

      【讨论】:

        【解决方案3】:

        Using RecursiveArrayIterator Class

        $objarr = new RecursiveIteratorIterator(new RecursiveArrayIterator($yourarray));
        foreach($objarr as $v) {
            $new_arr[]=$v;
        }
        print_r(array_unique($new_arr));
        

        Demo

        OUTPUT:

        Array
        (
            [0] => 40173
            [1] => 514081
            [2] => 363885
            [3] => 891382
            [5] => 5181
            [6] => 385
        )
        

        【讨论】:

          【解决方案4】:
          $new_array = array_merge($array1, $array2);
          $show_unique = array_unique($new_array);
          print_r($show_unique);
          

          array_merge 正在合并数组,array_unique 正在删除所有重复值。

          【讨论】:

            【解决方案5】:

            试试这样的:

            $new_array = array();
            
            foreach($big_array as $sub_array) {
                array_merge($new_array, $sub_array);
            }
            
            $new_array = array_unique($new_array);
            

            (代码未测试,这只是一个概念)

            【讨论】:

            • 确实如此,但剩下的答案是,那有什么问题呢?
            • 好的 SO 答案解释了问题和解决方案 + 显示代码。您的看起来更像是评论,阅读“答案”的人没有理由相信它会解决问题。如果您不想输入一句话来解释您的方法 - 只需将您的建议添加为评论。
            • 您无法将可读代码添加到评论中。但是当然,我们随时欢迎您编辑和改进答案,请继续。
            【解决方案6】:

            试试这个:

            $Arr = array(array(40173, 514081, 363885, 891382),
                         array(40173,5181, 385,891382));
            
            $newArr = array();
            
            foreach($Arr as $val1)
            {
            
            foreach($val1 as $val2)
            {  
                 array_push($newArr, $val2);
            }
            }
            
            echo '<pre>';
            print_r(array_unique($newArr));
            

            输出:

            Array
            (
                [0] => 40173
                [1] => 514081
                [2] => 363885
                [3] => 891382
                [5] => 5181
                [6] => 385
            )
            

            参考:https://eval.in/124240

            -- 谢谢

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2016-02-28
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多