$provinces = [
[
'id' => 1,
'name' => '张三',
'city' => '湖南'
], [
'id' => 2,
'name' => '李四',
'city' => '河北'
], [
'id' => 3,
'name' => '张三',
'city' => '湖北'
], [
'id' => 4,
'name' => '王五',
'city' => '北京'
], [
'id' => 5,
'name' => '王五',
'city' => '北京'
],
];
$temp = [];
foreach ($provinces as $province) {
$temp[$province['name'] . '|' . $province['city']][] = $province;
}
$result = array_values(array_filter($temp, function ($item) {
return count($item) >= 2;
}));
var_dump($result);
再补充一个效率高一点儿的。
$provinces = [
[
'id' => 1,
'name' => '张三',
'city' => '湖南'
], [
'id' => 2,
'name' => '李四',
'city' => '河北'
], [
'id' => 2,
'name' => '李四',
'city' => '河北'
], [
'id' => 3,
'name' => '张三',
'city' => '湖北'
], [
'id' => 4,
'name' => '王五',
'city' => '北京'
], [
'id' => 5,
'name' => '王五',
'city' => '北京'
], [
'id' => 2,
'name' => '李四',
'city' => '河北'
],
];
$temp = [];
$result = [];
foreach ($provinces as $province) {
$onlyKey = $province['name'] . '|' . $province['city'];
$tempKey = &$temp[$onlyKey];
$tempKey[] = $province;
if (count($tempKey) >= 2) {
$result[$onlyKey] = $tempKey;
}
}
unset($temp, $province, $tempKey);
var_dump(array_values($result));