php - 识别和收集多维数组中的潜在重复项
问题描述
我有一个类似下面的数组,我想在其中识别重复项;
$names = array(
array("Name" => "John Smith", "ID" => 65),
array("Name" => "Richard Johnson", "ID" => 96),
array("Name" => "John Smith", "ID" => 1105),
...
)
有很多类似的问题,但大多数只涉及在有重复项时返回真/假值,或者只是删除重复项。如果有一个与此结果相同的问题,我深表歉意,我查看但找不到适合我情况的问题。
我只想识别一对包含相同“名称”值但可能不同“ID”值的数组。我知道这可能会导致重复的结果与反转的值,但我想我可以自己解决这个问题。我不想删除重复的值,我只想识别它们。
理想情况下,它会返回一个类似于以下(或类似的东西)的数组;
$dupes = array(
array(
array("Name" => John Smith, "ID" => 65),
array("Name" => John Smith, "ID" => 1105)
)
)
然后我可以将其处理成更精致和用户友好的数组。
我正在考虑使用递归 in_array 函数,或者可能是第二个工作数组。有任何想法吗?
解决方案
为什么不直接循环并使用名称作为键创建一个新数组?在此处测试以下内容:http: //phptester.net/
$names = array(
array("Name" => 'John Smith', "ID" => 65),
array("Name" => 'Richard Johnson', "ID" => 96),
array("Name" => 'John Smith', "ID" => 1105)
);
$users = [];
foreach($names as $usersArray){
$users[$usersArray['Name']]['ids'][] = $usersArray['ID'];
}
print_r($users);
或者简单地说:
$names = array(
array("Name" => 'John Smith', "ID" => 65),
array("Name" => 'Richard Johnson', "ID" => 96),
array("Name" => 'John Smith', "ID" => 1105)
);
$users = [];
foreach($names as $usersArray){
$users[$usersArray['Name']][] = $usersArray['ID'];
}
print_r($users);
推荐阅读
- python - discord.py:如何在嵌入中使用 Spotify 类?
- css - 图像上的边框半径不起作用(Android)
- ios - 使用 Vision 扫描照片库中的图像
- python - 对于具有不同时区的不同位置,我是否应该在 UTC 中存储重复发生的本地事件的日期?
- java - 在 JavaFX 中更新 TableCell 时的奇怪行为
- javascript - Firebase Cloud 功能临时存储
- asp.net-core - 在我的服务器 Windows Server 2012 R2 上更新 .NET Core 3.1.5
- python - 安装特定版本的 sklearn
- python - Python2 中的 Python3 f 字符串替代
- r - 判断数据帧在 R 中为 Null 时长度为零的参数的错误