最近、JSONのカテゴリ構造をPHPで作っていました。しかし、私は php プログラマーではありません。なので、うまくできませんでした。
以下に私のphpソースがあります。
<?php
header('Content-Type: application/json; charset=utf-8');
$data = array(
array('categoryno' => 1, 'parentno' => null, 'name' => urlencode('book')),
array('categoryno' => 2, 'parentno' => 1, 'name' => urlencode('science')),
array('categoryno' => 3, 'parentno' => 1, 'name' => urlencode('medical')),
array('categoryno' => 4, 'parentno' => 2, 'name' => urlencode('physics')),
array('categoryno' => 5, 'parentno' => 3, 'name' => urlencode('medicine')),
array('categoryno' => 6, 'parentno' => null, 'name' => urlencode('game')),
array('categoryno' => 7, 'parentno' => 6, 'name' => urlencode('fantasy')),
);
$itemArray = array();
foreach($data as $key => &$item)
{
$itemArray[$item['categoryno']] = &$item;
$itemArray[$item['categoryno']]['children'] = array();
$itemArray[$item['categoryno']] = Array('item' => $itemArray[$item['categoryno']]);
if($item['item']['parentno'] && isset($itemArray[$item['item']['parentno']]))
{
$itemArray[$item['item']['parentno']]['children'][] = &$item;
}
if($item['item']['parentno'] && isset($itemArray[$item['item']['parentno']]))
{
unset($data[$key]);
}
}
$json = json_encode(Array('category' => $data));
echo urldecode($json);
?>
そしてこれが現在の結果です。
{
"category":{
"0":{
"item":{
"categoryno":1,
"parentno":null,
"name":"book",
"children":[
]
},
"children":[
{
"item":{
"categoryno":2,
"parentno":1,
"name":"science",
"children":[
]
},
"children":[
{
"item":{
"categoryno":4,
"parentno":2,
"name":"physics",
"children":[
]
}
}
]
},
{
"item":{
"categoryno":3,
"parentno":1,
"name":"medical",
"children":[
]
},
"children":[
{
"item":{
"categoryno":5,
"parentno":3,
"name":"medicine",
"children":[
]
}
}
]
}
]
},
"5":{
"item":{
"categoryno":6,
"parentno":null,
"name":"game",
"children":[
]
},
"children":[
{
"item":{
"categoryno":7,
"parentno":6,
"name":"fantasy",
"children":[
]
}
}
]
}
}
しかし、私は以下のような結果を作りたいです。
{
"category":{
"item":{
"categoryno":1,
"parentno":null,
"name":"book",
"children":[
"item":{
"categoryno":2,
"parentno":1,
"name":"science",
"children":[
"item":{
"categoryno":4,
"parentno":2,
"name":"physics",
"children":[
]
}
]
},
"item":{
"categoryno":3,
"parentno":1,
"name":"medical",
"children":[
"item":{
"categoryno":5,
"parentno":3,
"name":"medicine",
"children":[
]
}
]
},
]
},
"item":{
"categoryno":6,
"parentno":null,
"name":"game",
"children":[
"item":{
"categoryno":7,
"parentno":6,
"name":"fantasy",
"children":[
]
}
]
},
}
}
コードを修正するにはどうすればよいですか? 手伝っていただけませんか?