How to return array from recursive function
arrays, php, recursion
Solution
It seems you have a scope problem. Try this:
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;
}
Here is the PHP reference page describing how to pass by reference instead of by value. Basically it says that any function parameter which has a `&` in front of it will be passed by reference instead of by value.
Problem
I couldn't find solution for this and I don't have much time for this. So what I want is to make function that I give category ID and it returns all ID's of categories which are it's child categories. ``` 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; } ``` I wan't to store everything in $categories array. $var is category ID which I give to function. When I call this function it prints list of exactly what I want't but array is empty.