【问题标题】:how to remove duplicate elements from an array of arrays in PHP [duplicate]如何从PHP中的数组数组中删除重复元素[重复]
【发布时间】:2018-02-14 17:43:20
【问题描述】:
"2017-08-31":["5948a0dd21146a43fdcfef5a","5948a0dd21146a43fdcfef5a"]
"2017-08-22":["5948a0dd21146a43fdcfef5a"]
"2017-08-09":["59461ceae6179b19403c6a19","59461ceae6179b19403c6a19"]
"2017-08-08":["59461ceae6179b19403c6a19","59461ceae6179b19403c6a19"]

我有一个这样的数组,键是一个日期和与该日期关联的多个值,但我需要该键的唯一值。如何做到这一点? 我试过 array_unique 但没有运气!

【问题讨论】:

  • 你能显示出预期的结果吗?
  • 向我们展示您的尝试
  • 如上所述,您需要更好地定义您的问题以获得帮助 - 看起来您可以从所有子数组中获取第一个结果,但情况可能并非如此 - 您需要澄清
  • "2017-08-31":["5948a0dd21146a43fdcfef5a"] "2017-08-22":["5948a0dd21146a43fdcfef5a"] "2017-08-09":["59461ceae6179b19403c6a19"] "2017-08-08":["59461ceae6179b19403c6a19"]@Neodan
  • 所以每个数据键将包含一个元素数组?您的源数组是否总是包含重复项,或者日期键是否包含具有非重复值的数组?如果是这样,保留哪个值?或者,如果它们是唯一的,您的输出可能包含每个键的多个元素?

标签: php arrays


【解决方案1】:

只需将array_map 和array_unique 一起使用即可。

<?php
$a = json_decode('{"2017-08-31":["5948a0dd21146a43fdcfef5a","5948a0dd21146a43fdcfef5a"],
                   "2017-08-22":["5948a0dd21146a43fdcfef5a"],
                   "2017-08-09":["59461ceae6179b19403c6a19","59461ceae6179b19403c6a19"],
                   "2017-08-08":["59461ceae6179b19403c6a19","59461ceae6179b19403c6a19"]}', true);

echo json_encode(array_map("array_unique", $a));

【讨论】:

    【解决方案2】:
    $array = your array   
    $array = array_map(function($val){return array_unique($val);}, $array);
    

    【讨论】:

      【解决方案3】:

      如果可能,您最好使用 SQL 来执行此操作。否则,你可以试试这个:

      $array = array_unique($array, SORT_REGULAR);
      

      【讨论】:

      • 像魔术一样工作!
      猜你喜欢
      • 2014-01-18
      • 2013-05-20
      • 1970-01-01
      • 2011-07-03
      • 2012-02-12
      • 1970-01-01
      • 1970-01-01
      • 2017-03-21
      相关资源
      最近更新 更多