Php 分配数组键并使用相同的键添加其值
我有这样的数组Php 分配数组键并使用相同的键添加其值,php,multidimensional-array,Php,Multidimensional Array,我有这样的数组 array( [0]=>111 //id [1]=>5 //value to ad [2]=>3 //value to ad ) array( [0]=>111 [1]=>3 [2]=>7 ) array( [0]=>111 [1]=>2 [2]=>1 ) array( [0]=>222 [1]=>5 [2]=>3 ) 如何筛选结果是
array(
[0]=>111 //id
[1]=>5 //value to ad
[2]=>3 //value to ad
)
array(
[0]=>111
[1]=>3
[2]=>7
)
array(
[0]=>111
[1]=>2
[2]=>1
)
array(
[0]=>222
[1]=>5
[2]=>3
)
如何筛选结果是每个“id”显示一次的数组,并在它们具有相同的“id”时添加“要添加的值”。因此,结果将是:
array(
[111]=>array(
[0]=>10
[1]=>11
)
[222]=>array(
[0]=>5
[1]=>3
)
)
感谢您的回答和建议 您必须使用循环手动执行此操作。像这样的方法应该会奏效:
$result = array();
foreach( $input as $row) {
$id = array_shift( $row);
foreach( $row as $key => $value) {
$result[ $id ][ $key ] =
( isset( $result[ $id ][ $key ]) ?
$result[ $id ][ $key ] + $value :
$value
);
}
}
输出:
array(2) {
[111]=>
array(2) {
[0]=>
int(10)
[1]=>
int(11)
}
[222]=>
array(2) {
[0]=>
int(5)
[1]=>
int(3)
}
}
代码
附加说明
关键是用来检查数组中是否已经存在索引。保持简单
foreach ($arrays as $array) {
$final[$array[0]] = array(
@$final[$array[0]][0] + $array[1],
@$final[$array[0]][1] + $array[2]
);
}
Array
(
[111] => Array
(
[0] => 10
[1] => 11
)
[222] => Array
(
[0] => 5
[1] => 3
)
)
foreach ($arrays as $array) {
$final[$array[0]] = array(
@$final[$array[0]][0] + $array[1],
@$final[$array[0]][1] + $array[2]
);
}