我的下一个数组具有重复值,但只是第一个位置:
array(3){
[0]=> array(5){
[0]=>'user1',
[1]=>'2',
[2]=>'0',
[3]=>'0',
[4]=>'0',
},
[2]=> array(5){
[0]=>'user2',
[1]=>'0',
[2]=>'0',
[3]=>'0',
[4]=>'0'
},
[3]=> array(5){
[0]=>'user1',
[1]=>'0',
[2]=>'0',
[3]=>'0',
[4]=>'4'
}}
$newArray = array();
foreach ($array as $key) {
$tmparray [] = array($key[0]);
foreach ($tmparray as $keytmp) {
if ($keytmp[0]==$key[0]) {
$position = array_search($keytmp[0], $key);
$newArray[] = array($keytmp[0]);
}
}
}
但我尝试将该值与array_search进行比较并创建一个新数组,但只创建第一个数组,如何创建一个数组来连接第一个位置和第三个并保留值位置,如下例所示?
array(3){
[0]=> array(5){
[0]=>'user1',
[1]=>'2',
[2]=>'0',
[3]=>'0',
[4]=>'4',
},
[2]=> array(5){
[0]=>'user2',
[1]=>'0',
[2]=>'0',
[3]=>'0',
[4]=>'0',
}}
提前致谢!
答案 0 :(得分:0)
这应该适合你:
只需遍历数组并使用每个subArray的第一个键作为结果数组中的键。如果尚未设置,则只需将subArray分配给结果数组,否则只需将值添加到结果数组中。
最后,您可以使用array_values()
重新编制数组索引。
<?php
$result = [];
foreach($array as $innerArray) {
if(!isset($result[$innerArray[0]])) {
$result[$innerArray[0]] = $innerArray;
} else {
$result[$innerArray[0]][1] += $innerArray[1];
$result[$innerArray[0]][2] += $innerArray[2];
$result[$innerArray[0]][3] += $innerArray[3];
$result[$innerArray[0]][4] += $innerArray[4];
}
}
$result = array_values($result);
?>