我找不到解决方案,我没有太多时间。所以我想要的是创建我给类别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;
}
我不想将所有内容存储在$ categories数组中。 $ var是我赋予函数的类别ID。当我调用这个函数时,它会打印出我想要的列表,但是数组是空的。
答案 0 :(得分: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;
}
Here是PHP参考页面,描述了如何通过引用而不是按值传递。基本上它说任何在它前面有&
的函数参数都将通过引用而不是值传递。
答案 1 :(得分:0)
function getChildren($id, $categories)
应该有用。
数组超出了范围,因此该功能没有触及您要返回的那个。它在函数内部创建了一个新的本地$类别。
答案 2 :(得分:0)
$ categories仅存在于get children范围内。您可以通过引用将其作为第二个参数传递,也可以使用use (&$categories)