Php 多维数组过滤组内的重复项
我正在尝试删除基于相同日期的重复数组值组(仅保留1个组) 同时,取“1”键(pid键上方)中的数字,并将其与重复的分组数相加 我遇到的问题是“小时”下的每个组都是“仅”假设在同一“小时”部分下使用重复组进行过滤 以下是我开始使用的阵列:Php 多维数组过滤组内的重复项,php,Php,我正在尝试删除基于相同日期的重复数组值组(仅保留1个组) 同时,取“1”键(pid键上方)中的数字,并将其与重复的分组数相加 我遇到的问题是“小时”下的每个组都是“仅”假设在同一“小时”部分下使用重复组进行过滤 以下是我开始使用的阵列: Array( [1488] => Array ( [hours] => Array ( [0] => Array
Array(
[1488] => Array
(
[hours] => Array
(
[0] => Array
(
[0] => 2016/07/11 - 2016/07/17
[1] => 37
[pid] => 1488
)
[1] => Array
(
[0] => 2016/07/04 - 2016/07/10
[1] => 51
[pid] => 1488
)
[2] => Array
(
[0] => 2016/07/04 - 2016/07/10
[1] => 44
[pid] => 1488
)
[3] => Array
(
[0] => 2016/07/04 - 2016/07/10
[1] => 22
[pid] => 1488
)
)
)
[2] => Array
(
[hours] => Array
(
[0] => Array
(
[0] => 2016/07/04 - 2016/07/10
[1] => 9.5
[pid] => 2
)
[1] => Array
(
[0] => 2016/07/04 - 2016/07/10
[1] => 8
[pid] => 2
)
[2] => Array
(
[0] => 2016/07/04 - 2016/07/10
[1] => 7
[pid] => 2
)
[3] => Array
(
[0] => 2016/07/11 - 2016/07/17
[1] => 5
[pid] => 2
)
)
)
)
下面是我需要它的样子:
Array(
[0] => Array
(
[hours] => Array
(
[0] => Array
(
[0] => 2016/07/11 - 2016/07/17
[1] => 37
[pid] => 1488
)
[1] => Array
(
[0] => 2016/07/04 - 2016/07/10
[1] => 117
[pid] => 1488
)
)
)
[1] => Array
(
[hours] => Array
(
[0] => Array
(
[0] => 2016/07/04 - 2016/07/10
[1] => 24.5
[pid] => 2
)
[1] => Array
(
[0] => 2016/07/11 - 2016/07/17
[1] => 5
[pid] => 2
)
)
)
)
这是我的代码:
$temp_array = array();
$w = 0;
$key_array = array();
$new_array = array();
foreach($project_hours as $old_arrs) {
foreach ($old_arrs["hours"] as $val) {
if (!in_array($val[0], $key_array)) {
$key_array[$w] = $val[0];
$temp_array[$w] = $val;
} else {
$ser = array_search($val[0], $key_array);
$temp_array[$ser][1] += $val[1];
}
$w++;
$old_arrs["hours"] = $temp_array;
}
$new_array[] = $old_arrs;
}
echo '<pre>';
print_r($new_array);
echo '</pre>';
$temp_array=array();
$w=0;
$key_array=array();
$new_array=array();
foreach($project\u hours as$old\u arrs){
foreach($val的旧租金[“小时数]){
如果(!in_数组($val[0],$key_数组)){
$key_数组[$w]=$val[0];
$temp_数组[$w]=$val;
}否则{
$ser=数组搜索($val[0],$key\u数组);
$temp_数组[$ser][1]+=$val[1];
}
$w++;
$old_arrs[“hours”]=$temp_数组;
}
$new_array[]=$old_arrs;
}
回声';
打印(新阵列);
回声';
您只需执行一些简单的技巧来组织数组键,然后在两个区域中使用array\u values()
将关联键重置为数字键:
Array
(
[0] => Array
(
[hours] => Array
(
[0] => Array
(
[0] => 2016/07/11 - 2016/07/17
[1] => 37
[pid] => 1488
)
[1] => Array
(
[0] => 2016/07/04 - 2016/07/10
[1] => 117
[pid] => 1488
)
)
)
[1] => Array
(
[hours] => Array
(
[0] => Array
(
[0] => 2016/07/04 - 2016/07/10
[1] => 24.5
[pid] => 2
)
[1] => Array
(
[0] => 2016/07/11 - 2016/07/17
[1] => 5
[pid] => 2
)
)
)
)
给你:
在构建此数组时,您还可以使用
[0]
值作为索引,如果设置为,则只需将[1]
添加在一起。您是一个救生员。实际上,我刚刚阅读了@JonathanKuhn注释。他基本上提出了我刚才所做的,所以他首先有了这个想法!
Array
(
[0] => Array
(
[hours] => Array
(
[0] => Array
(
[0] => 2016/07/11 - 2016/07/17
[1] => 37
[pid] => 1488
)
[1] => Array
(
[0] => 2016/07/04 - 2016/07/10
[1] => 117
[pid] => 1488
)
)
)
[1] => Array
(
[hours] => Array
(
[0] => Array
(
[0] => 2016/07/04 - 2016/07/10
[1] => 24.5
[pid] => 2
)
[1] => Array
(
[0] => 2016/07/11 - 2016/07/17
[1] => 5
[pid] => 2
)
)
)
)