PHP的一个问题

先看代码吧:

function checkData($a, $arr=[]){
    if($a < 5){
        $arr[] = $a;
        $a ++;
        checkData($a,$arr);
    }
    return $arr;
}

$a = 2;
$res = checkData($a);
echo "结果是";
var_dump($res);

执行这段代码,我期望的结果是返回一个数组 [2,3,4];

请问应该怎样修改并说明理由。非常感谢!

阅读 2.5k
4 个回答

因为你使用递归的方法前没加 return, 先理解一下递归算法,看一下这篇文章,应该能帮到你 http://www.cnblogs.com/geek12...

function checkData($a, $arr=[]){

    if($a < 5){
        $arr[] = $a;

        $a ++;
        return checkData($a,$arr);

    }
    return $arr;
}

$a = 2;
$res = checkData($a);
echo "结果是";
var_dump($res);

function checkData($a, $arr=[]){

改为

function checkData($a, &$arr=[]){

何苦呢?用range不挺好

$res = range(2, 5);
echo "结果是";
var_dump($res);

将$arr设置为静态的数组。不用做参数

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题