比较两个多维数组的值和插入(如果不是退出)

时间:2016-03-25 15:18:14

标签: php for-loop multidimensional-array foreach

我有两个数组$array1$array2我动态地看起来像

$array1 = Array
    (
        [0] => Array
            (
                [hour] => 10
                [activity] => Array
                    (
                        [0] => Array
                            (
                                [activity_id] => 1
                                [cnt] => 2
                            )
                        [1] => Array
                            (
                                [activity_id] => 2
                                [cnt] => 1
                            )
                    )
            )
        [1] => Array
            (
                [hour] => 11
                [activity] => Array
                    (
                    )
            )
        [2] => Array
            (
                [hour] => 12
                [percentage] => 0
                [activity] => Array
                    (
                        [0] => Array
                            (
                                [activity_id] => 2
                                [cnt] => 5
                            )
                        [1] => Array
                            (
                                [activity_id] => 3
                                [cnt] => 2
                            )
                    )
            )
    );


$array2 = Array
    (
        [0] => Array
            (
                [id] => 1
                [name] => Phone Calls
                [readable] => 1
                [status] => active
            )
        [1] => Array
            (
                [id] => 2
                [name] => Meeting With Customer
                [readable] => 1
                [status] => active
            )
        [2] => Array
            (
                [id] => 3
                [name] => Others Works
                [readable] => 1
                [status] => active
            )
    );

我需要比较。

如果$array2['id']不在$array1["activity"]中(即" activity_id"),请将数组['activity_id'=>$array2['id'],'cnt'=>0]添加到$array1['activity']

我的结果必须像

$result = Array
    (
        [0] => Array
            (
                [hour] => 10
                [activity] => Array
                    (
                        [0] => Array
                            (
                                [activity_id] => 1
                                [cnt] => 2
                            )
                        [1] => Array
                            (
                                [activity_id] => 2
                                [cnt] => 1
                            )
                        [2] => Array
                            (
                                [activity_id] => 3
                                [cnt] => 0
                            )
                    )
            )
        [1] => Array
            (
                [hour] => 11
                [activity] => Array
                    (
                        [0] => Array
                            (
                                [activity_id] => 1
                                [cnt] => 0
                            )
                        [1] => Array
                            (
                                [activity_id] => 2
                                [cnt] => 0
                            )
                        [2] => Array
                            (
                                [activity_id] => 3
                                [cnt] => 0
                            )
                    )
            )
        [2] => Array
            (
                [hour] => 12
                [percentage] => 0
                [activity] => Array
                    (
                        [0] => Array
                            (
                                [activity_id] => 1
                                [cnt] => 0
                            )
                        [1] => Array
                            (
                                [activity_id] => 2
                                [cnt] => 5
                            )
                        [2] => Array
                            (
                                [activity_id] => 3
                                [cnt] => 2
                            )
                    )
            )
    );

我试过的是

$finalArray = array();
foreach($array1 as $arr1) {
    foreach($array2 as $arr2) {
        if(!in_array($arr2['id'], $arr1['activity'])) {
            $array = ['activity_id'=>$arr2['id'], 'cnt'=>0];   
        }
        array_push($arr1['activity'], $array);
        unset($array);
    }
    array_push($finalArray, $result);
}
print_r($finalArray);

in_array()函数无法正常工作,或者我试图以错误的方式执行此操作。有人可以帮我这个吗?

1 个答案:

答案 0 :(得分:0)

抱歉,最后我得到了我做错了。可能有人得到了帮助。

一切都好,只需更改行

即可
if(!in_array($arr2['id'], $arr1['activity'])) {

if(!in_array( $readActivity['id'], array_column($result['activity'],'activity_id'))){