<分区>
我正在尝试编写一个简单的脚本来对数组执行二进制搜索。如果我尝试在其中一个条件中调用 return,程序会成功运行但不会返回任何内容。
当我在函数上调用 var_dump() 时,它返回 null。下面我放了一些注释来表明它确实在条件语句之外返回了一个值。它还在条件中呼应期望值。
谁能告诉我可能发生了什么?我束手无策。
<?php
$find = 56;
$data = array();
for($i = 1; $i < 100; $i++){
$j = ($i * 2);
array_push($data, $j);
}
function bin_sort($data,$find){
//return $find; THIS WORKS
$split = floor(count($data) / 2);
$mid = $data[$split];
if($mid == $find){
return $mid;
//echo $mid; THIS WORKS. IT ECHOS THE CORRECT VALUE
//return 'test'; DOES NOT WORK
}elseif($find > $mid){
$key = array_search($mid, $data);
$data1 = array_slice($data,$key);
bin_sort($data1, $find);
}elseif($find < $mid){
$key = array_search($mid, $data);
$data1 = array_slice($data, 0, $key);
bin_sort($data1, $find);
}
}
echo bin_sort($data, $find);
?>