PHP连接两个相同键值的数组
我想知道如何解决这个问题。我有3(三)个数组,在“data”键中包含嵌套值,如下所示:PHP连接两个相同键值的数组,php,arrays,laravel,associative-array,Php,Arrays,Laravel,Associative Array,我想知道如何解决这个问题。我有3(三)个数组,在“data”键中包含嵌套值,如下所示: array:3 [ 0 => array:3 [ "status" => "Terkirim" "warna" => "lightgreen" "data" => array:12 [ 0 => 0 1 => 0 2 => 0 3 => 0 4 => 0 5
array:3 [
0 => array:3 [
"status" => "Terkirim"
"warna" => "lightgreen"
"data" => array:12 [
0 => 0
1 => 0
2 => 0
3 => 0
4 => 0
5 => 0
6 => 3
7 => 0
8 => 0
9 => 0
10 => 0
11 => 0
]
]
1 => array:3 [
"status" => "Selesai"
"warna" => "lightblue"
"data" => array:12 [
0 => 0
1 => 0
2 => 0
3 => 0
4 => 0
5 => 0
6 => 3
7 => 0
8 => 0
9 => 0
10 => 0
11 => 0
]
]
2 => array:3 [
"status" => "Selesai"
"warna" => "lightblue"
"data" => array:12 [
0 => 0
1 => 0
2 => 0
3 => 0
4 => 0
5 => 0
6 => 0
7 => 1
8 => 0
9 => 0
10 => 0
11 => 0
]
]
]
我的问题是如何在“状态”相同的情况下加入“数据”,或者如果值已经存在于同一索引键上,则如何求和,这就是我想要实现的:
array:3 [
0 => array:3 [
"status" => "Terkirim"
"warna" => "lightgreen"
"data" => array:12 [
0 => 0
1 => 0
2 => 0
3 => 0
4 => 0
5 => 0
6 => 3
7 => 0
8 => 0
9 => 0
10 => 0
11 => 0
]
]
1 => array:3 [
"status" => "Selesai"
"warna" => "lightblue"
"data" => array:12 [
0 => 0
1 => 0
2 => 0
3 => 0
4 => 0
5 => 0
6 => 3
7 => 1 <== the joined value
8 => 0
9 => 0
10 => 0
11 => 0
]
]
]
数组:3[
0=>数组:3[
“状态”=>“Terkirim”
“华纳”=>“浅绿色”
“数据”=>数组:12[
0 => 0
1 => 0
2 => 0
3 => 0
4 => 0
5 => 0
6 => 3
7 => 0
8 => 0
9 => 0
10 => 0
11 => 0
]
]
1=>数组:3[
“状态”=>“Selesai”
“华纳”=>“浅蓝色”
“数据”=>数组:12[
0 => 0
1 => 0
2 => 0
3 => 0
4 => 0
5 => 0
6 => 3
7 => 1 0
9 => 0
10 => 0
11 => 0
]
]
]
任何帮助都将不胜感激……:) 您可以这样做:
$joinedArray = [];
for ($initialArray as $array) {
if (array_key_exists($array['status'], $joinedArray) {
for ($joinedArray['data'] as $key, $dataElement) {
$joinedArray['data'][$key] = $dataElement + $array['data'][$key];
}
} else {
$joinedArray[$array['status']] = $array;
}
}
您可以使用
array\u reduce()
将数组汇总为关联数组。使用array\u values()
将关联数组转换为简单数组
$arr = //Your array
$result = array_values(array_reduce($arr, function($c, $v){
if ( !isset( $c[ $v['status'] ] ) ) $c[ $v['status'] ] = $v;
else foreach( $c[ $v['status'] ]['data'] as $key => &$val ) $val += $v['data'][$key];
return $c;
}, array()));
echo "<pre>";
print_r( $result );
echo "</pre>";
它只需稍加修改即可工作,你保证了我的安全:)谢谢
Array
(
[0] => Array
(
[status] => Terkirim
[warna] => lightgreen
[data] => Array
(
[0] => 0
[1] => 0
[2] => 0
[3] => 0
[4] => 0
[5] => 0
[6] => 3
[7] => 0
[8] => 0
[9] => 0
[10] => 0
[11] => 0
)
)
[1] => Array
(
[status] => Selesai
[warna] => lightblue
[data] => Array
(
[0] => 0
[1] => 0
[2] => 0
[3] => 0
[4] => 0
[5] => 0
[6] => 3
[7] => 1
[8] => 0
[9] => 0
[10] => 0
[11] => 0
)
)
)