我有一个数组,我确定其中有一些重复的值,我想在这个数组中搜索并找到重复的值并返回该数组的键。让我用一个例子来解释,这是我的数组:[ 0 => [ 'name' => 'name0', 'family' => 'family0', 'email' => 'email0@sample.com', 'rate' => 10 ], 1 => [ 'name' => 'name1', 'family' => 'family1', 'email' => 'email1@sample.com', 'rate' => 4 ], 2 => [ 'name' => 'name0', 'family' => 'family0', 'email' => 'email0@sample.com', 'rate' => 6 ]];现在,我想在这个数组中搜索name, family, 并email同时返回父项的键(在本例中为 0 和 2)。因为我想创建一个这样的新数组:[ 0 => [ 'name' => 'name0', 'family' => 'family0', 'email' => 'email0@sample.com', 'rate' => [ 10, 6 ] ], 1 => [ 'name' => 'name1', 'family' => 'family1', 'email' => 'email1@sample.com', 'rate' => [ 4 ] ],];我怎样才能在 PHP 中做到这一点?
1 回答
ITMISS
TA贡献1871条经验 获得超8个赞
您可以使用array-reduce并使用 3 个类似的字段作为键。
定义一个创建密钥并设置或添加速率的函数:
function combineRate($carry, $item) {
$k = implode('###', array($item['name'], $item['family'], $item['email']));
if (isset($carry[$k]))
$carry[$k]['rate'][] = $item['rate'];
else {
$item['rate'] = [$item['rate']];
$carry[$k] = $item;
}
return $carry;
}
用空数组调用它:
$res = array_values(array_reduce($a, 'combineRate', array()));
- 1 回答
- 0 关注
- 125 浏览
添加回答
举报
0/150
提交
取消