【发布时间】:2015-01-19 00:55:40
【问题描述】:
我在从 mysql 结果为预期的 json 格式构建正确的数组时遇到问题:
表:
创建表`Config_Category`( `id` INT(11) NOT NULL AUTO_INCREMENT, `name` VARCHAR(50) NOT NULL DEFAULT '0', `topid` INT(8) NOT NULL DEFAULT '0', 主键(`id`) ) ;填满表格:
id 名称 topid 2 DVD 1 3 矩阵 2 4 光盘 1 5 深紫色 4 6平克弗洛伊德4 7蝙蝠侠2MyClass
{
public function getMenu($topid)
{
$stmt = $this->pdoDash->query("SELECT id,name
FROM Config_Category WHERE topid='$topid'");
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($results as $row)
{
if ($this->hasChildKats($row['id']))
{
$path[] = array("group" => $row['name']);
$path[] = array_merge($this->getMenu($row['id'], $path));
} else
{
$path["item"][] = array("name" => $row['name']);
}
}
return $path;
}
private function hasChildKats($katID)
{
$stmt = $this->pdoDash->query("SELECT count(*)
FROM Config_Category WHERE topid='$katID'");
return $stmt->fetchColumn();
}
}
$this->test = new MyClass;
echo json_encode($this->test->getMenu());
我的结果:
[
{
"group": "DVD"
},
{
"item": [
{
"name": "Matrix"
},
{
"name": "Batman"
}
]
},
{
"group": "CD"
},
{
"item": [
{
"name": "Pink Floyd"
},
{
"name": "Deep Purple"
}
]
}
]
预期结果:
[
{
"group": "DVD",
"item": [
{
"name": "Matrix"
},
{
"name": "Batman"
}
]
},
{
"group": "CD",
"item": [
{
"name": "Pink Floyd"
},
{
"name": "Deep Purple"
}
]
}
]
【问题讨论】:
标签: php mysql arrays json multidimensional-array