首页 > 解决方案 > 如何区分2个多维数组?

问题描述

我正在尝试获取两个多维数组的差异并返回另一个数组中不匹配的数组。

我在这里:

阵列 1:

Array ( 
    [0] => Array ( [Dashboard] => /LMS/Dashboard ) 
    [1] => Array ( [Notifications] => /LMS/Notifications ) 
    [2] => Array ( [Clients] => /LMS/Clients ) 
    [3] => Array ( [Penalties] => /LMS/Penalties ) 
    [4] => Array ( [Payments] => /LMS/Payments ) 
    [5] => Array ( [Profit] => /LMS/Profit ) 
    [6] => Array ( [Income] => /LMS/Income ) 
    [7] => Array ( [Outcome] => /LMS/Outcome ) 
    [8] => Array ( [Accounts] => /LMS/Accounts ) 
    [9] => Array ( [Collection] => ) 
    [10] => Array ( [Missed Payments] => ) 
    [11] => Array ( [Applied Penalties] => ) 
    [12] => Array ( [Group Names] => /LMS/Group-Names ) 
)

阵列 2:

Array ( 
    [0] => Array ( [Notifications] => /LMS/Notifications ) 
    [1] => Array ( [Clients] => /LMS/Clients ) 
    [2] => Array ( [Penalties] => /LMS/Penalties ) 
    [3] => Array ( [Payments] => /LMS/Payments ) 
    [4] => Array ( [Collection] => ) 
    [5] => Array ( [Missed Payments] => ) 
    [6] => Array ( [Applied Penalties] => ) 
)

我想得到数组 1 中没有匹配的数组。

标签: phpcodeignitermultidimensional-array

解决方案


您可以使用以下代码:

public static function check_diff_multi($array1, $array2){
        //Get all the Keys from the 2nd Array.
        $keys = array();
        foreach( $array2 as $key => $a ) {
            $keys = array_merge( $keys, array_keys( $a ));
        }

        //This will be the final array
        $result = array();

         //Loop through First Array
        foreach( $array1 as $key => $a ) {
            $firstKey = key($a);  //Get the Key
            if( in_array( $firstKey, $keys ) ) {  //If this key exists in the 2nd array, then continue
                continue;
            }
            $result[] = $array1[$key]; //This key is not present in 2nd array, so add to output.
        }
        return $result;
    }

推荐阅读