php数组搜索键&;从其他数组中按值排序

php数组搜索键&;从其他数组中按值排序,php,multidimensional-array,Php,Multidimensional Array,我有一个这样的参考数组(数据量是动态的,大约3000条记录) 并使用“TYPE”的值搜索“[9][7][16][1]”键,“KEYCODE”的值搜索以下数组中上述键的值。(动态,约5000条记录) 输出数组应该是 Array ( [0] => Array ( [NAME] => Chris [9] => PPPPP [7] => HHHHH [16] =

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

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

输出数组应该是

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
        )
)
“Nick”有项[7]=>AAAA,“Allen”有项[1]=>CCCCC,所以从数据数组中删除。
我知道删除数组项的方法,但不知道如何实现从其他数组按键/值对进行比较和搜索。

关于我从您的问题中了解到的内容,以下是一个简单的解决方案:

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

就我从你的问题中了解到的情况而言,以下是一个简单的解决方案:

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

如果我没有弄错的话,如果搜索功能与[KEYCODE]和[TYPE]匹配,您想从第二个数组中删除项目?是的,如果查找到[KEYCODE]和[TYPE]的全部匹配项目,请删除[NAME][9][7][16][1]是否要根据
类型从第一个数组中查找
KEYCODE
,然后根据找到的
KEYCODE
删除第二个数组中的整个记录?同一
类型是否可以有多个
KEYCODE
值?第一个数组中的[TYPE,KEYCODE]是唯一的。但在第二个数组中,可能有相同的“类型”但不同的“键码”,我编辑了第二个数组以获得更接近真实数据的数组。如果我没有弄错的话,如果搜索函数与[KEYCODE]和[TYPE]匹配,您想从第二个数组中删除项?是的,如果找到[KEYCODE]和[TYPE]的总匹配项,请删除[NAME][9][7][16][1]是否要根据
类型从第一个数组中查找
KEYCODE
,然后根据找到的
KEYCODE
删除第二个数组中的整个记录?同一
类型是否可以有多个
KEYCODE
值?第一个数组中的[TYPE,KEYCODE]是唯一的。但在第二个数组中,可能有相同的“类型”但不同的“键码”,我编辑了第二个数组以获得更接近真实数据的数组。
    $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
    )

)