【发布时间】:2014-07-21 03:59:16
【问题描述】:
下面的代码有问题。我现在正在尝试一段时间,我相信我一定是盲人,我看不到明显的东西。你能指出这个显而易见的事情吗?
函数应该获取所有类别及其名称。正确获取 ID,但名称仅用于第一个类别和第一个子类别。
function collect($id, $current = null) {
global $db_1;
$s = "SELECT category.id as id, category_i18n.name as name from category,category_i18n WHERE category.parent_id= '$id' AND category.visible = '1' AND category_i18n.culture='en' AND category.id = category_i18n.id ORDER BY category.order_asc ASC";
$r = mysql_query($s, $db_1);
$row = mysql_fetch_array($r);
$children = array();
if (mysql_num_rows($r) > 0) {
while ($row) {
$children['name'] = $row['name'];
$children[$row['id']] = collect($row['id']);
}
}
else
{
$children['name'] = $row['name'];
}
return $children;
}
编辑:
EDIT2:
更改后我得到这样的数组:
array(3) {
["name"]=>
string(9) "Cat"
["id"]=>
string(5) "10404"
["children"]=>
array(3) {
["name"]=>
string(10) "Subcat"
["id"]=>
string(5) "10410"
["children"]=>
bool(false)
}
}
我认为 mysql 查询没有问题,因为在 phpmyadmin 中它可以正常工作并正确显示所有数据...
【问题讨论】:
-
您的
while ($row)循环应该永远循环,因为它永远不会获取新行。
标签: php recursion nested iteration