这是我的代码:
<?php
$uriClass = 'dictionaries';
$uriMethod = 'quran';
$parent_of_table_code = array(11=>"islamic_sources",
12=>"islamic_sources",
65=>"dictionaries",
66=>"dictionaries");
$routes = array(11=>"quran",
12=>"torat",
65=>"quran",
66=>"longman");
echo $table_code = array_search($uriMethod, $routes);
//=> 11
正如您所看到的,结果是11
,但由于父级(dictionaries
(的原因,我需要获得65
。array_search()
返回第一个匹配,我需要根据父项使其工作。知道我该怎么做吗?
一个简单的方法是首先找到其中一个条件的所有匹配项(使用array_keys()
和要选择的值(,然后用另一个数组检查每个匹配项以匹配第二个值。。。
$matchedRoutes = array_keys($routes, $uriMethod);
foreach ( $matchedRoutes as $key ) {
if ( $parent_of_table_code[$key] == $uriClass ) {
echo $key;
break;
}
}
还有其他方法使用纯array_方法,但这只做了最少的检查。
更新:
您可以将其减少为1个循环,并在根本不使用数组方法的情况下检查所有内容。。。
foreach ( $routes as $key => $route ) {
if ( $route == $uriMethod && $parent_of_table_code[$key] == $uriClass ) {
echo $key;
break;
}
}
您可以使用此
$table_code = array_keys(
array_intersect_key( $routes, $parent_of_table_code ),
$uriMethod );
CCD_ 6返回两个数组CCD_ 7和CCD_。从中,array_keys
为您提供了以$uriMethod
作为第二个参数的键的结果(它返回$uriMethod
匹配的键(。
UPDATE$table_code将是一个数组,因此$table_codes
将是更好的名称。如果你想的话,你可以迭代并回显每个键:
$table_codes = array_keys(
array_intersect_key( $routes, $parent_of_table_code ),
$uriMethod );
foreach($table_codes as $key) {
echo $key;
}