美好的一天,我试图在php上foreach
循环中重复一遍。每个数组都是循环的循环。我需要获取最重复项目的id
和name
,在此示例中是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 :(得分: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。
答案 1 :(得分:0)
尝试此步骤从阵列中删除重复项
$repeated = array_map("unserialize", array_unique(array_map("serialize", $repeated)));