【问题标题】:How to get most repeate item on Multidimensional Array如何获取多维数组中重复次数最多的项目
【发布时间】:2016-12-02 12:34:00
【问题描述】:

美好的一天,我试图在 php 上的 foreach 循环中获得最多重复。每个数组都是循环的一个循环。我需要得到重复次数最多的项目的idname,在这个例子中是 jake。

这是循环:

    foreach ($json[$key]['data'] as $user){
      var_dump($user);
    }

输出是:

    array(2) {
      ["id"]=>
      string(4) "7032"
      ["name"]=>
      string(4) "Jake"
    }
    array(2) {
      ["id"]=>
      string(4) "1021"
      ["name"]=>
      string(3) "Ana"
    }
    array(2) {
      ["id"]=>
      string(4) "2058"
      ["name"]=>
      string(4) "John"
    }
    array(2) {
      ["id"]=>
      string(4) "7032"
      ["name"]=>
      string(4) "Jake"
    }

我需要的输出是:

    $repeated = array(2) {
      ["id"]=>
      string(4) "7032"
      ["name"]=>
      string(4) "Jake"
    }

提前感谢您的所有回答。

【问题讨论】:

标签: php arrays


【解决方案1】:

您不必在这里使用显式循环:

$counts = array_count_values(array_map(function ($user) {
    ksort($user);
    return json_encode($user);   
}, $users));

arsort($counts);

$result = json_decode(key($counts), true);

基本上,我们将数组元素映射到 JSON 表示。这是通过array_map 完成的。这样做是因为array_count_values 只能计算字符串或整数。请注意,在使用json_encode 之前,我们使用ksort。如果用户数据相同但顺序不同,则需要这样做。

然后我们使用arsort对保留数组键进行降序排序。

最后,我们用key 得到第一个键,并用json_decode 解码得到原始数组元素。

这里是working demo

【讨论】:

    【解决方案2】:

    尝试此步骤从数组中删除重复项,

    $repeated  = array_map("unserialize", array_unique(array_map("serialize", $repeated)));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-16
      • 2016-02-08
      • 2015-02-21
      • 2010-09-29
      • 2022-10-23
      • 2017-01-06
      • 2023-03-03
      相关资源
      最近更新 更多