如何从递归函数返回数组

LaK*_*ede 4 php arrays recursion

我找不到解决办法,我没有太多时间.所以我想要的是创建我给类别ID的函数,它返回所有类别的ID,这是它的子类别.

function getID($var) {
    $categories = array();

    function getChildren($id) {
        $result = mysql_query("SELECT * FROM categories WHERE parentID = '$id'");
        echo "<ul>";
        while ($row = mysql_fetch_array($result)) {
            echo "<li><a>{$row['ID']}</a>";
            $categories[] = $row['ID'];
            getChildren($row['ID']);
            echo "</li>";
        }
        echo "</ul>";
    }

    getChildren($var);
    return $categories;
}
Run Code Online (Sandbox Code Playgroud)

我不想将所有内容存储在$ categories数组中.$ var是我赋予函数的类别ID.当我调用这个函数时,它会打印出我想要的列表,但是数组是空的.

fre*_*rik 10

看来你有一个范围问题.试试这个:

function getChildren(&$categories, $id) {
  $result = mysql_query("SELECT * FROM categories WHERE parentID = '$id'");
  echo "<ul>";
  while ($row = mysql_fetch_array($result)) {
    echo "<li><a>{$row['ID']}</a>";
    $categories[] = $row['ID'];
    getChildren($categories, $row['ID']);
    echo "</li>";
  }
  echo "</ul>";
}

function getID($var) {
  $categories = array();

  getChildren($categories, $var);
  return $categories;
}
Run Code Online (Sandbox Code Playgroud)

是PHP参考页面,描述了如何通过引用而不是按值传递.基本上它表示任何具有&前面的函数参数都将通过引用而不是值传递.