doumi7861 2016-03-25 15:18
浏览 62
已采纳

比较两个多维数组的值和插入(如果不存在)

I have two array $array1 and $array2 which I get dynamically and look like

$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
            )
    );

which i need to compare.

if $array2['id'] is not in $array1["activity"](i.e"activity_id") add array ['activity_id'=>$array2['id'],'cnt'=>0] to $array1['activity'].

My result must be like

$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
                            )
                    )
            )
    );

What i have tried is

$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() function is not working as I excepted or I am trying to do it in the wrong way. Can someone helps me with this?

  • 写回答

1条回答 默认 最新

  • doutuosai3504 2016-03-29 15:24
    关注

    Sorry,finally i get what i did wrong.May be someone get helped.

    everything is ok just change the line

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

    into

    if(!in_array( $readActivity['id'], array_column($result['activity'],'activity_id'))){
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog