合并循环中的数组 PHP
Merge arrays made in a loop PHP
我有一个数组,同一周重复 3 次,但 3 个不同的用户分别拥有您的总数:
array
0 =>
array
'week' => '1'
'user' => 'Oswaldo Aranha'
'totals' => 'value'
1 =>
array
'week' => '1'
'user' => 'Protogenes'
'totals' => 'value'
2 =>
array
'week' => '1'
'user' => 'Rego Barros'
'totals' => 'value'
3 =>
array
'week' => '2'
'user' => 'Oswaldo Aranha'
'totals' => 'value'
4 =>
array
'week' => '2'
'user' => 'Protogenes'
'totals' => 'value'
5 =>
array
'week' => '2'
'user' => 'Rego Barros'
'totals' => 'value'
...
我想在一个数组中统一一周,包括 3 个用户和您的总数。像这样:
array
0 =>
array
'week' => '1'
'Oswaldo Aranha' => 'value'
'Protogenes' => 'value'
'Rego Barros' => 'value'
1 =>
array
'week' => '2'
'Oswaldo Aranha' => 'value'
'Protogenes' => 'value'
'Rego Barros' => 'value'
2 =>
array
'week' => '3'
'Oswaldo Aranha' => 'value'
'Protogenes' => 'value'
'Rego Barros' => 'value'
...
我正在尝试使用 array_merge()
、array_combine()
、array_whatever()
但不起作用。我该怎么做?
你可以使用array_merge();
$arr=array_merge ( $array[0],$array[1] ,$array[3]);
希望对您有所帮助:)
有关更多信息,此 link 将对您有所帮助:
$array = [
[
'week' => '1',
'user' => 'Oswaldo Aranha',
'totals' => 'value'
],
[
'week' => '1',
'user' => 'Protogenes',
'totals' => 'value'
],
[
'week' => '1',
'user' => 'Rego Barros',
'totals' => 'value'
],
[
'week' => '2',
'user' => 'Oswaldo Aranha',
'totals' => 'value',
],
[
'week' => '2',
'user' => 'Protogenes',
'totals' => 'value'
]
];
function combineWeeks($array) {
$results = [];
for($i = 0;$i < count($array);$i++) {
$results[$array[$i]['week']][$array[$i]['user']] = $array[$i]['totals'];
$results[$array[$i]['week']]['week'] = $array[$i]['week'];
}
$combined = [];
foreach($results as $key => $value) {
$combined[] = $results[$key];
}
return $combined;
}
用法:
$combinedArray = combineWeeks($array);
print_r($combinedArray);
输出:
Array
(
[0] => Array
(
[Oswaldo Aranha] => value
[week] => 1
[Protogenes] => value
[Rego Barros] => value
)
[1] => Array
(
[Oswaldo Aranha] => value
[week] => 2
[Protogenes] => value
)
)
我认为没有 php 函数可以为您做这件事。自己做吧:
$in = $array;
$out = [];
foreach ($in as $curIn) {
if ( ! isset ($out[$curIn["week"]])) {
$out[$curIn["week"]] = [];
}
$out[$curIn["week"]][$curIn["user"]] = $curIn["totals"];
}
就是这样。
我有一个数组,同一周重复 3 次,但 3 个不同的用户分别拥有您的总数:
array
0 =>
array
'week' => '1'
'user' => 'Oswaldo Aranha'
'totals' => 'value'
1 =>
array
'week' => '1'
'user' => 'Protogenes'
'totals' => 'value'
2 =>
array
'week' => '1'
'user' => 'Rego Barros'
'totals' => 'value'
3 =>
array
'week' => '2'
'user' => 'Oswaldo Aranha'
'totals' => 'value'
4 =>
array
'week' => '2'
'user' => 'Protogenes'
'totals' => 'value'
5 =>
array
'week' => '2'
'user' => 'Rego Barros'
'totals' => 'value'
...
我想在一个数组中统一一周,包括 3 个用户和您的总数。像这样:
array
0 =>
array
'week' => '1'
'Oswaldo Aranha' => 'value'
'Protogenes' => 'value'
'Rego Barros' => 'value'
1 =>
array
'week' => '2'
'Oswaldo Aranha' => 'value'
'Protogenes' => 'value'
'Rego Barros' => 'value'
2 =>
array
'week' => '3'
'Oswaldo Aranha' => 'value'
'Protogenes' => 'value'
'Rego Barros' => 'value'
...
我正在尝试使用 array_merge()
、array_combine()
、array_whatever()
但不起作用。我该怎么做?
你可以使用array_merge();
$arr=array_merge ( $array[0],$array[1] ,$array[3]);
希望对您有所帮助:)
有关更多信息,此 link 将对您有所帮助:
$array = [
[
'week' => '1',
'user' => 'Oswaldo Aranha',
'totals' => 'value'
],
[
'week' => '1',
'user' => 'Protogenes',
'totals' => 'value'
],
[
'week' => '1',
'user' => 'Rego Barros',
'totals' => 'value'
],
[
'week' => '2',
'user' => 'Oswaldo Aranha',
'totals' => 'value',
],
[
'week' => '2',
'user' => 'Protogenes',
'totals' => 'value'
]
];
function combineWeeks($array) {
$results = [];
for($i = 0;$i < count($array);$i++) {
$results[$array[$i]['week']][$array[$i]['user']] = $array[$i]['totals'];
$results[$array[$i]['week']]['week'] = $array[$i]['week'];
}
$combined = [];
foreach($results as $key => $value) {
$combined[] = $results[$key];
}
return $combined;
}
用法:
$combinedArray = combineWeeks($array);
print_r($combinedArray);
输出:
Array
(
[0] => Array
(
[Oswaldo Aranha] => value
[week] => 1
[Protogenes] => value
[Rego Barros] => value
)
[1] => Array
(
[Oswaldo Aranha] => value
[week] => 2
[Protogenes] => value
)
)
我认为没有 php 函数可以为您做这件事。自己做吧:
$in = $array;
$out = [];
foreach ($in as $curIn) {
if ( ! isset ($out[$curIn["week"]])) {
$out[$curIn["week"]] = [];
}
$out[$curIn["week"]][$curIn["user"]] = $curIn["totals"];
}
就是这样。