php - 尽管满足条件,但如果在条件语句中调用 return,则函数返回 null。返回条件之外的期望值

标签 php algorithm recursion binary-search

<分区>

我正在尝试编写一个简单的脚本来对数组执行二进制搜索。如果我尝试在其中一个条件中调用 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);


?>

最佳答案

bin_sort 中的递归调用在它们之前缺少 return,因此如果发生任何递归,顶层只会返回 null

关于php - 尽管满足条件,但如果在条件语句中调用 return,则函数返回 null。返回条件之外的期望值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52771176/

相关文章:

algorithm - 关于在数组中查找值的问题

java - 如何在链表中的某个索引处递归插入节点

php - 如何确定字符串是序列化对象/数组还是只是字符串?

php - 带有子 PHP/MYSQL 的类别

php - PHP 亚马逊简单存储服务教程

c - C 中的数组排序函数

php - Node.js + Socket.IO 和 CodeIgniter

c - 在一次传递中从字符串解析 int 的算法

node.js - 树状 Mongoose 文档结构的递归

php - 使用 PHP 从 XML 文档中删除特定类型的所有元素