0

我有一个这样的参考数组(数据量是动态的,大约3000条记录)

Array
(
    [0] => Array
        (
            [DEPT] => FIN
            [KEYCODE] => AAAAA
            [TYPE] => 7
        )

    [1] => Array
        (
            [DEPT] => SALE
            [KEYCODE] => BBBBB
            [TYPE] => 16
        )

    [2] => Array
        (
            [DEPT] => SCM
            [KEYCODE] => CCCCC
            [TYPE] => 1
        )
)

并使用 "TYPE" 的值搜索键 "[9][7][16][1]" 和 "KEYCODE" 的值在以下数组中搜索上述键的值。(动态,约5000条记录)

Array
(
    [0] => Array
        (
            [NAME] => Nick
            [9] => GGGGG
            [7] => AAAAA
            [16] => MMMMM
            [1] => KKKKK
        )
    [1] => Array
        (
            [NAME] => Chris
            [9] => PPPPP
            [7] => BBBBB
            [16] => ZZZZZ
            [1] => RRRRR
        )
    [2] => Array
        (
            [NAME] => Cathy
            [9] => SSSSS
            [7] => UUUUU
            [16] => JJJJJ
            [1] => AAAAA
        )
    [3] => Array
        (
            [NAME] => Allen
            [9] => FFFFF
            [7] => DDDDD
            [16] => WWWWW
            [1] => CCCCC
        )
)

输出数组应该是

Array
(
    [0] => Array
        (
            [NAME] => Chris
            [9] => PPPPP
            [7] => HHHHH
            [16] => ZZZZZ
            [1] => RRRRR
        )
    [1] => Array
        (
            [NAME] => Cathy
            [9] => SSSSS
            [7] => UUUUU
            [16] => JJJJJ
            [1] => XXXXX
        )
)

“尼克”有项目 [7]=> AAAAA,“艾伦”有项目 [1]=> CCCCC,所以从数据数组中删除。我知道删除数组项的方法,但不知道通过其他数组中的键/值对来实现比较和搜索。

4

1 回答 1

2

对于我从您的问题中了解到的情况,这是您所需任务的简单解决方案:

    $firstArr = array(
        0 => array(
            "DEPT" => 'FIN',
            'KEYCODE' => 'AAAAA',
            'TYPE' => 7
        ),
        1 => array(
            'DEPT' => 'SALE',
            'KEYCODE' => 'BBBBB',
            'TYPE' => 16
        ),
        2 => array(
            'DEPT' => 'SCM',
            'KEYCODE' => 'CCCCC',
            'TYPE' => 1
        )
    );

    $secondArr = array(
        0 => array(
            'NAME' => 'Nick',
            9 => 'GGGGG',
            7 => 'AAAAA',
            16 => 'MMMMM',
            1 => 'KKKKK',
        ),
        1 => array(
            'NAME' => 'Chris',
            9 => 'PPPPP',
            7 => 'HHHHH',
            16 => 'ZZZZZ',
            1 => 'RRRRR'
        ),
        2 => array(
            'NAME' => 'Cathy',
            9 => 'SSSSS',
            7 => 'UUUUU',
            16 => 'JJJJJ',
            1 => 'XXXXX'
        ),
        3 => array(
            'NAME' => 'Allen',
            9 => 'FFFFF',
            7 => 'DDDDD',
            16 => 'WWWWW',
            1 => 'CCCCC'
        )
    );

    foreach($firstArr as $row){
        foreach($secondArr as $i => $que){
            if(array_key_exists($row['TYPE'], $que) && $row['KEYCODE'] == $que[$row['TYPE']]){
                unset($secondArr[$i]); // deleting selected item from the array...
            }
        }
    }

    echo '<pre>'; 
    print_r($secondArr);
    echo '</pre>';

上述代码的输出:

Array
(
    [1] => Array
    (
        [NAME] => Chris
        [9] => PPPPP
        [7] => HHHHH
        [16] => ZZZZZ
        [1] => RRRRR
    )

[2] => Array
    (
        [NAME] => Cathy
        [9] => SSSSS
        [7] => UUUUU
        [16] => JJJJJ
        [1] => XXXXX
    )

)
于 2020-11-25T08:40:53.620 回答