2016-12-02 41 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