<?php
function getArr($num){
  $sArr = Array();
  $sArr[1] = $num;
  if($num >0) {
    $sArr[child] = getArr($num-1);
  }
  return $sArr;
}
print_r(getArr(3));
?>
Array
(
    [1] => 3
    [child] => Array
        (
            [1] => 2
            [child] => Array
                (
                    [1] => 1
                    [child] => Array
                        (
                            [1] => 0
                        )                )        ))

解决方案 »

  1.   

    谢谢。那如果希望在递归过程中生成连续数组元素的数组,该怎么实现?循环1-3-n,得到$var[1-n](这里的元素1-n不一定连续)一维数组。function getArr($i){
    $sArr = Array();
    var $randi = rand();
    $sArr[$randi] = 1;
    $i--;
    if ($i>0){
    //假设这里递归n次,则得到连续的同级数组
    $sArr[]=getArr($i);
    }
    }
    $strArr = getArr(5);
    希望得到是5个数组元素的一个数组对象。
      

  2.   

    不需要递归
    function getArr($i){
      $sArr = Array();
      while($i-- > 0)
        $sArr[] = 1;
      return $sArr;
    }
      

  3.   

    使用递归是因为程序其它部分需要。是为了递归而生成这样的数组。
    递归数组地址,我这样试过,好象不行。
    function getArr($i,$sArr){
    $sArr = Array();
    var $randi = rand();
    $sArr[$randi] = 1;
    $i--;
    if ($i>0){
    //假设这里递归n次,则得到连续的同级数组
    $sArr[]=getArr($i,$sArr);
    }
    }得到的结果是空,但使用global使该变量全局,倒是可以。可能我的语法或理解错了,望指点。
      

  4.   

    <?php
    function getArr($i,&$sArr) {
      $sArr = Array();
      $randi = rand();
      $sArr[$randi] = 1;
      $i--;
      if ($i>0){
        //假设这里递归n次,则得到连续的同级数组
        $sArr[]=getArr($i,$sArr);
      }
      return $sArr;
    }
    $ar = array();
    print_r(getArr(5,$ar));
    ?>
      

  5.   

    请问:这里的&表示什么?
      

  6.   

    &表示传址
    函数传递参数默认是传值,即函数得到的是一个副本。而当用&声明后传递的是变量的地址,这样在函数内可对该变量进行修改。