我有一个像下面这样的表,试图获取JSON格式的2D数据但没有成功。我尝试了不同的方法,但无法实现。请指导我获得结果。
***忘记上传代码,这是我的试用代码的更新问题。
id company_name
-----------------
1 Alexa
2 Cisco
3 Blackberry
4 Amazon
5 Deka
6 Colgate
7 Dell
8 BBC
我希望在2D JSON
格式数组中获得如下数据。
[
{
id: 1,
heading: 'A',
data: [
{id: 4, text: 'Amazon'},
{id: 1, text: 'Alexa'},
]
},
{
id: 2,
heading: 'B',
data: [
{id: 8, text: 'BBC'},
{id: 3, text: 'Blackberry'},
]
},
{
id: 3,
heading: 'C',
data: [
{id: 2, text: 'Cisco'},
{id: 6, text: 'Colgate'},
]
},
{
id: 4,
heading: 'D',
data: [
{id: 5, text: 'Deka'},
{id: 7, text: 'Dell'},
]
}
]
我正在尝试使用以下代码,但尚未成功。我还在努力,如果有人提出帮助,我将非常感激。
$query = mysqli_query($dblink,"SELECT id,company_name FROM company_names ORDER BY company_name");
$data = array();
while($row = mysqli_fetch_assoc($query)) {
$id = $row["id"];
$letter = strtolower(substr($row["company_name"],0,1));
if(is_numeric($letter)) $letter = "0-9";
if(!isset($data[$letter])){
$data[$letter] = array();}
$data[$letter][] = $row["company_name"];
}
echo json_encode($data);
答案 0 :(得分:3)
实际上,我只在代码中添加了为结果数组设置的其他列。
$data = array();
$id = 1;
while($row = mysqli_fetch_assoc($query)) {
$letter = strtoupper($row["company_name"]{0});
if(is_numeric($letter)) $letter = "0-9";
if(!isset($data[$letter])) {
$data[$letter]['heading'] = $letter;
$data[$letter]['id'] = $id++;
}
$data[$letter]['data'][] = $row;
}
echo json_encode($data);