Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 多维数组过滤组内的重复项_Php - Fatal编程技术网

Php 多维数组过滤组内的重复项

Php 多维数组过滤组内的重复项,php,Php,我正在尝试删除基于相同日期的重复数组值组(仅保留1个组) 同时,取“1”键(pid键上方)中的数字,并将其与重复的分组数相加 我遇到的问题是“小时”下的每个组都是“仅”假设在同一“小时”部分下使用重复组进行过滤 以下是我开始使用的阵列: Array( [1488] => Array ( [hours] => Array ( [0] => Array

我正在尝试删除基于相同日期的重复数组值组(仅保留1个组)

同时,取“1”键(pid键上方)中的数字,并将其与重复的分组数相加

我遇到的问题是“小时”下的每个组都是“仅”假设在同一“小时”部分下使用重复组进行过滤

以下是我开始使用的阵列:

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
                        )

                )

        )

)