[英]Combine Arrays based on certain keys
I am processing a csv and need to combine an array if two of the three keys match. 我正在处理一个csv,如果三个键中的两个匹配,则需要合并一个数组。 For instance, take the following example:
例如,使用以下示例:
<?php
$data = [
[
'id' => 1,
'player' => 'John',
'sport' => 'Football'
],
[
'id' => 2,
'player' => 'John',
'sport' => 'Football'
],
[
'id' => 3,
'player' => 'Mike',
'sport' => 'Soccer'
]
];
Below is the desired result. 以下是期望的结果。
$wanted = [
[
'id' => [1,2],
'player' => 'John',
'sport' => 'Football',
],
[
'id' => [3],
'player' => 'Mike',
'sport' => 'Soccer',
],
];
What would be the optimal way to achieve this? 实现这一目标的最佳方法是什么?
check this out 看一下这个
<?php
$data = [
[
'id' => 1,
'player' => 'John',
'sport' => 'Football'
],
[
'id' => 2,
'player' => 'John',
'sport' => 'Football'
],
[
'id' => 3,
'player' => 'Mike',
'sport' => 'Soccer'
]
];
function combine($input){
$output = [];
foreach($input as $subarray){
$output[$subarray['player']]['id'][] = $subarray['id'];
$output[$subarray['player']]['player'] = $subarray['player'];
$output[$subarray['player']]['sport'] = $subarray['sport'];
}
return array_values($output);
}
print_r(combine($data));
output 产量
Array
(
[0] => Array
(
[id] => Array
(
[0] => 1
[1] => 2
)
[player] => John
[sport] => Football
)
[1] => Array
(
[id] => Array
(
[0] => 3
)
[player] => Mike
[sport] => Soccer
)
)
check this out 看一下这个
<?php
$data = [
[
'id' => 1,
'player' => 'John',
'sport' => 'Football'
],
[
'id' => 2,
'player' => 'John',
'sport' => 'Football'
],
[
'id' => 3,
'player' => 'John',
'sport' => 'soccer'
],
[
'id' => 4,
'player' => 'John',
'sport' => 'soccer'
],
[
'id' => 5,
'player' => 'Mike',
'sport' => 'Soccer'
]
];
function combine($input){
$output = [];
foreach($input as $subarray){
$output[$subarray['player'].$subarray['sport']]['id'][] = $subarray['id'];
$output[$subarray['player'].$subarray['sport']]['player'] = $subarray['player'];
$output[$subarray['player'].$subarray['sport']]['sport'] = $subarray['sport'];
}
return array_filter(array_values($output));
}
print_r(combine($data));
output 产量
Array
(
[0] => Array
(
[id] => Array
(
[0] => 1
[1] => 2
)
[player] => John
[sport] => Football
)
[1] => Array
(
[id] => Array
(
[0] => 3
[1] => 4
)
[player] => John
[sport] => soccer
)
[2] => Array
(
[id] => Array
(
[0] => 5
)
[player] => Mike
[sport] => Soccer
)
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.