比较两个多维多维数组

时间:2012-06-28 17:35:34

标签: php arrays compare

我得到了以下数组(缩短了......多点意味着它们是数据,两个数组都从第1项开始直到结束。

Array
(
    [12U_S_136_15_29_141] => Array
        (
            .....

            [35] => Array
                (
                    [stop_sequence] => 35
                    [stop_id] => 1601394
                )

            .....

            [46] => Array
                (
                    [stop_sequence] => 46
                    [stop_id] => 122052
                )

            [47] => Array
                (
                    [stop_sequence] => 47
                    [stop_id] => 136208
                )

            [48] => Array
                (
                    [stop_sequence] => 48
                    [stop_id] => 128163
                )

        )

    [12U_S_141_57_6_141] => Array
        (
            [1] => Array
                (
                    [stop_sequence] => 1
                    [stop_id] => 1601394
                )

            .....

            [12] => Array
                (
                    [stop_sequence] => 12
                    [stop_id] => 122052
                )

            [13] => Array
                (
                    [stop_sequence] => 13
                    [stop_id] => 136208
                )

            [14] => Array
                (
                    [stop_sequence] => 14
                    [stop_id] => 128163
                )

        )

)

如您所见,两个阵列末端相等...... 35 = 146 = 12,...,48 = 14。相同,我的意思是相同的stop_id,但stop_sequence总是不同的,当然还有数组条目号。

我想知道如何将整个数组与另一个数组进行比较,以便我可以知道,第二个数组是否与100%的第一个数组匹配(除了我们不寻找stop_sequence因此,这可能是不同的。所以在这种情况下,两者都将标记为“相等”,但如果让我们说最后一个条目具有不同的stop_id(条目48将是!=来自条目14),则数组将标记为“不平等”。

任何人都有引导我的道路?我一直在想,但不知道怎么做。我尝试过array_compare,但这没有任何结果:\

由于

修改 没有什么可以改变到数据库。此外,需要以这种方式创建数组(使用奇怪的文本,即12U_S_136_15_29_141)。我可以用PHP做任何事情。

1 个答案:

答案 0 :(得分:0)

将stop_id提取到新数组:s并比较thous

这是一个有用的功能

    function sub_array($array, $sub_key)
    {
            $new_array = array();
            if(is_array($array) AND $array)
            {
                    foreach($array as $key => $data)
                    {
                            $new_array[$key] = $data[$sub_key];
                    }
            }
            return $new_array;
    }

然后只是比较数组

if(sub_array($a['12U_S_136_15_29_141'], 'stop_id') == sub_array($a['12U_S_141_57_6_141'], 'stop_id'))

或者如果您知道匹配的stop_id:

$first_stop_id_list = sub_array($a['12U_S_136_15_29_141'], 'stop_id');
$secound_stop_id_list = sub_array($a['12U_S_141_57_6_141'], 'stop_id');
$matches = array_intersect($first_stop_id_list, $secound_stop_id_list);

if(!$matches)
   echo "No stop_id matches";
else if($first_stop_id_list = $secound_stop_id_list)
   echo "all element was in both";
else if($matches == $first_stop_id_list)
   echo "all element in first was in secound";
else if($matches == $secound_stop_id_list)
   echo "all element in secound was in first";