如何获得对等的数组密钥



这是我的代码:

<?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(的原因,我需要获得65array_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;
}

最新更新