【问题标题】:How to remove the duplicate data into array如何将重复数据删除到数组中
【发布时间】:2019-05-08 02:10:57
【问题描述】:

需要代码帮助。

这是我要删除两 (2) 个 Wi-fi 的阵列列表。

Array
(
    [20-10] => Array
        (
            [facilityCode] => 20
            [facilityGroupCode] => 10
            [order] => 1
            [number] => 1968
            [voucher] => 
            [description] => Year of construction
        )

    [550-70] => Array
        (
            [facilityCode] => 550
            [facilityGroupCode] => 70
            [order] => 1
            [indFee] => 
            [indYesOrNo] => 1
            [voucher] => 
            [description] => Wi-fi
        )

    [20-60] => Array
        (
            [facilityCode] => 20
            [facilityGroupCode] => 60
            [order] => 1
            [indLogic] => 1
            [voucher] => 
            [description] => Shower
        )


    [261-60] => Array
        (
            [facilityCode] => 261
            [facilityGroupCode] => 60
            [order] => 1
            [indFee] => 
            [indYesOrNo] => 1
            [voucher] => 
            [description] => Wi-fi
        )

)

我也试过 array_unique();

结果如下:

Array
(
    [0] => Year of construction
    [1] => Shower
    [2] => Wi-fi

)

但我想保留设施代码、设施组代码、订单、编号等。 感谢您的帮助。

【问题讨论】:

    标签: php arrays multidimensional-array


    【解决方案1】:

    一个班轮就可以满足你的要求,

    $result = array_reverse(array_values(array_column(array_reverse($arr), null, 'description')));
    

    来源 link 以满足您的要求。

    【讨论】:

      【解决方案2】:
      //populate data
      $mainArr = array();
      $first = array(
          "facilityCode" => 20,
          "facilityGroupCode" => 10,
          "order" => 1,
          "number" => 1968,
          "voucher" => "",
          "description" => "Year of construction",
      );
      $second = array(
          "facilityCode" => 550,
          "facilityGroupCode" => 70,
          "order" => 1,
          "indFee" => "",
          "indYesOrNo" => 1,
          "voucher" => "",
          "description" => "Wi-fi"
      );
      
      $mainArr["20-10"] = $first;
      $mainArr["550-70"] = $second;
      $mainArr["261-60"] = $second;
      
      //get duplicates
      $counter = 0;
      $duplicates = array();
      
      foreach ($mainArr as $key=>$val) {
          $counter++;
          if (in_array($key, $duplicates)) continue;
          $i = 0;
      
          foreach ($mainArr as $key1=>$val1) {
              if ($i < $counter) {
                  $i++;
                  continue;
              }
      
              if ($val["description"] == $val1["description"]) {
                  array_push($duplicates, $key1);
              }
          }
      }
      
      //remove duplicates
      foreach($duplicates as $key) {
          unset($mainArr[$key]);
      }
      

      【讨论】:

        【解决方案3】:
        $itemRows = array(); // Your main array
        $descriptionValues = array();
        
        foreach ($itemRows as $itemKey => $itemRow) {
            foreach ($itemRow as $key => $value) {
                if ($key == 'description') {
                    if (in_array($value, $descriptionValues)) {
                        unset($itemRows[$itemKey]);
        
                        continue 2;
                    }
        
                    $descriptionValues[] = $value;
                }
            }
        }
        

        【讨论】:

          猜你喜欢
          • 2016-09-04
          • 2022-01-19
          • 2020-02-11
          • 1970-01-01
          • 2017-12-16
          • 2012-01-20
          • 2017-10-16
          • 2017-06-21
          • 2015-09-24
          相关资源
          最近更新 更多