これは SO に関する私の最初の投稿なので、これがこの質問の間違った領域である場合はお詫び申し上げます。
PHP で書かれたページがあり、 jqTreeという jquery プラグインを使用して特定のレイアウトのツリーを作成しようとしています。次の戻り形式を使用して、SQL Server 2008 R2 データベースからページの読み込み時にデータを取得しています。
╔═════════════╦═══════╦═════════╗
║ Location ║ SAN ║ Switch ║
╠═════════════╬═══════╬═════════╣
║ LocationA ║ SAN1 ║ Switch1 ║
║ LocationA ║ SAN1 ║ Switch2 ║
║ LocationA ║ SAN2 ║ Switch3 ║
║ LocationB ║ SAN3 ║ Switch4 ║
║ LocationB ║ SAN3 ║ Switch5 ║
║ LocationB ║ SAN3 ║ Switch6 ║
╚═════════════╩═══════╩═════════╝
ツリーを次のようにする必要があります。
LocationA
|_ SAN1
| |_ Switch1
| |_ Switch2
|_ SAN2
|_ Switch3
LocationB
|_ SAN3
|_ Switch4
|_ Switch5
|_ Switch6
jqTree サイトによると、JSON は次の形式である必要があります (私は想定しています)。
var data = [
{
label: 'LocationA',
children: [
{ label: 'SAN1',
children: [
{ label: 'Switch1'},
{ label: 'Switch2'}
]
},
{ label: 'SAN2',
children: [
{ label: 'Switch3'}
]
}
},
{
label: 'LocationB',
children: [
{ label: 'SAN1',
children: [
{ label: 'Switch4'},
{ label: 'Switch5'},
{ label: 'Switch6'}
]
}
}
];
私は次のように近づくことを試みました:
$locations = array();
foreach ($results as $res) {
if(!in_array($res['town'], $locations, true)){
$locations[$res['town']]['children'][$res['san']][] = $res['name'];
}
}
しかし、それは明らかに正しくありません...
私は入れ子の配列ソリューションを見てきましたが、何かがクリックされていないので、誰かがこれで私を助けてくれることを望んでいました. 同じ/類似の機能を持つことができる限り、別のプラグインを使用しても問題ありません。
状況を十分に説明できれば幸いですが、さらにデータが必要な場合はお知らせください。
前もって感謝します!