递归函数 - 帮助调用函数
当返回值我有一个多维数组搜索:递归函数 - 帮助调用函数
> Array (
> [91] => Array
> (
> [FoSW] => 117
> [DfLR] => 107
> [FoA] => 0
> [SoG] => 116
> [RST] => 38
> [SSW] => 0
> [total] => 458
> )
>
> [92] => Array
> (
> [FoSW] => 118
> [DfLR] => 0
> [FoA] => 58
> [SoG] => 0
> [RST] => 0
> [SSW] => 40
> [total] => 463
> ) //etc....
我使用这个功能,搜索值,并返回其关键。如果未找到该值,则将值减1并再次搜索。
$搜索是MD数组
$型将是太阳级例如
$得分将是例如值0F 24(在MD阵列的所述第二电平的键)
注:整个阵列的位置,有24
function find_percentile($search, $type, $score){
foreach($search as $key=>$val){
if ($val[$type]== $score){
return $key;
$found = true;
}
else {
$found = false;
}
}
if ($found == false){
$new_score = $score - 1;
find_percentile($search, $type, $new_score);
}
}
值没有太阳级,如果我从呼应foreach循环最终将回声出$关键的递归找到钥匙。
但是当我用该函数构建一个单独的数组或回显该函数时,它不会获得递归找到的键。
$perc_array[$key] = find_percentile($percentiles, $key, $val);
这将只附加匹配的值。递归发现的值不会在这个数组中。
echo find_percentile($percentiles, $key, $val);
不会回显递归发现的值。
你忘了返回值,该函数返回:
if ($found == false){
$new_score = $score - 1;
return find_percentile($search, $type, $new_score);//<- here
}
REALLY ???你现在没有想法如何解决我的问题。但是,我认为它会再次调用该函数,直到在if语句中返回找到的值...我有点困惑。 –
@SmithSmithy“我认为它会再次调用该函数,直到在if语句中返回找到的值” - 它会调用该函数,但它的值不会被返回。试着模仿电脑的工作方式,仔细写下纸上的所有步骤。 – user4035
function find_percentile($search, $type, $score){
$max = null;
$where = 0;
foreach($search as $key=>$val){
if ($val[$type]== $score){
return $key;
} else if($val[$type]>$max && $val[$type] < $score) {
$where = $key;
$max = $val[$type];
}
}
return $where;
}
你为什么不只是使用array_search()? – XaxD
如果你使用array_search,FoA和SoG的值可能是24 –
,你可以'array_search($ score,$ search)',你不需要做任何递归......你可以遍历每个第二维.. – XaxD