ホームページ >バックエンド開発 >PHPチュートリアル >データベースからクエリされたツリー構造データを配列に循環的に割り当てるにはどうすればよいですか?
//データベース ID 本社 1
49d15b3a-1798-11e3-991e-001d608a0834 55ac840c-0 f01-11e3-bcf6-001d608a0834 デザイン部門 1
49e24a33-1798-11e3 e-001d608a0834 55ac840c-0f01-11e3-bcf6-001d608a0834実装セクション 1
49f452aa-1798-11e3-991e-001d608a0834 55ac840c-0f01-11e3 -bcf6-001d608a0834 品質検査セクション 1
5599eec4-0f01-11e3-bcf6-001d60 8a0834 f6597beb -0f00-11e3-bcf6-001d608a0834 マーケティング 1 部門
55ac840c -0f01-11e3-bcf6-001d608a0834 f6597beb-0f00-11e3-bcf6-001d608a0834 研究開発部 1
55ca0 kid-0f01-11e3-bcf6-001d608a0834 f6597beb-0f00-11e3- bcf6 -001d608a0834 人事部 1
b5e86db9-0f01-11e3 -bcf6-001d608a0834 f6667833-0f00-11e3-bcf6-001d608a0834 財務 1 部
b5f69ff5-0f01-11e3- bcf6-001d608a0834 f6667833-0f00-11e3-bcf6-001d6 08a0834 マネージャー 1
b60bc9b5-0f01-11e3-bcf6-001d608a0834 f6667833-0f00 -11e3-bcf6-001d608a0834 物流部門 1
f6597beb-0f00-11e3-bcf6-001d608a0834 03e 782cd-0f00-11e3-bcf6-001d608a0834 会社 1
f6667833-0f0 0-11e3- bcf6-001d608a0834 03e782cd-0f00-11e3-bcf6-001d608a0834会社 2
f6761c03-0f00-11e3-bcf6-001d608a0834 03e782cd-0f00-11e3-bcf6 -001d608a0834 会社 3 1
f683c3c7-0f00-11e3-bcf6-001d608a0834 03e782cd-0f00 -11e3-bcf6-001d608a0834 会社 1
f6955d9f-0f00- 11e3-bcf6-001d608a0834 03e782cd-0f00-11e3-bcf6-001d608a0834 会社 5
//php メソッド コード
public function getTreeModel() {
$sql = "親 ID が NULL のメニューツリーから * を選択"
$quer = $this ->db->query($sql);
$row = $quer->result_array();
エコー数($data)。"
RETURN $ Data;
}
// このサイクルの配列への分配に問題があります。 。 。このページでは、第 1 レベルと第 2 レベルのみが出力され、第 3 レベルと第 4 レベルは出力されませんが、var_dump($row3) には値が含まれています。以下のメソッドについてアドバイスをお願いします
Public function getArray($row) {
$data=array(); foreach ($row as $val) {
$arr1['id '] = $val['id' ]; $ sql2 = "from menutree = '$ val [id]"; $row2 = $quer2->result_array(); if($ quer2-> num_rows()> 0){
foreach($ row2として$ va2){
$ arr2 ['id'] = $ va2 ['id'];
$arr2['メニュー名'] = $va2['メニュー名'];
$data[] = $arr2;
//echo $va2['menuname']."
";
$sql3 = "select *from menutree where parentid ='$va2[id]'";
$quer3 = $this->db->query($sql3);
$row3 = $quer3->result_array();
if ($quer3->num_rows()>0) {
$this->getArray($row3);
}
}
$this->getArray($row2);
}
}
$data を返します。
}
//php页面--我就贴个页面的取值
for ($i=0;$i
echo $key."----".$r."
";
}
}
//これは页面出力の結果
id----03e782cd-0f00-11e3-bcf6-001d608a0834
メニュー名----总公司
id----f6597beb-0f00- 11e3-bcf6 -001d608a0834
メニュー名 ----一公司
id ----f6667833-0f00-11e3-bcf6-001d608a0834
メニュー名 ----二公司
id ----f6761c03-0f00-11e3-bcf6-001d608a0834
メニュー名----三公司
id----f683c3c7-0f00-11e3-bcf6-001d608a0834
メニュー名----四公司
id----f6955d9f-0f00-11e3-bcf6-001d608a0834
メニュー名----五公司
public function getArray($row) {
$data=array();
if (count($row)>0) {
for ($i=0;$i
$id2 = $row[$i]['id'];
$sql2 = "select *from menutree where parentid ='$id2'";
$quer2 = $this->db->query($sql2);
$row2 = $quer2->result_array();
//var_dump($quer2->num_rows());
if ($quer2->num_rows()>0) {
for ($j=0;$j
$data[$j] = $row2[$j];
$id3 = $row2[$j]['id'];
$sql3 = "select *from menutree where parentid ='$id3'";
$quer3 = $this->db->query($sql3);
$row3 = $quer3->result_array();
if ($quer3->num_rows()>0) {
$this->getArray($row3);
$data を返します。
}
foreach 换成了for