1

次の配列を取得しました(短縮された...複数のドットは、それらがそこにあるデータであることを意味します。両方の配列は、エントリ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 = 1... 46 = 1248 = 14。等しいとは、同じことを意味しますが、配列のエントリ番号stop_idは常に異なります。stop_sequence

配列全体を他の配列と比較する方法を知りたいので、たとえば、2番目の配列が最初の配列と100%一致するかどうかを知ることができます(ただしstop_sequence、これは異なる可能性があるため、検索しません。この場合、両方とも「等しい」とマークされますが、最後のエントリのstop_idが異なる場合(エントリ48はエントリ14とは!=)、配列は「等しくない」とマークされます。

誰かが私を導く道を持っていますか?私は考え続けますが、方法がわかりません。array_compareを試しましたが、何も起こりませんでした:\

ありがとう

編集 データベースに変更を加えることはできません。また、配列はこの方法で作成する必要があります(つまり、奇妙なテキストを使用して12U_S_136_15_29_141)。PHPで何でもできます。

4

1 に答える 1

0

stop_id を新しい array: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";
于 2012-06-28T17:50:55.603 に答える