2016-12-02 38 views
1

美好的一天,我试图获得最重复的内部foreach在PHP循环。每个数组都是循环的一个循环。我需要得到最重复的项目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" 
    } 

感谢您的答案。

+0

可能会帮助http://stackoverflow.com/a/9599420/1507546 – smarber

回答

0

尝试此步骤从您的阵列删除重复的,

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

格式化您的代码 –

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