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