ホームページ >バックエンド開発 >PHPチュートリアル >データベースからクエリされたツリー構造データを配列に循環的に割り当てるにはどうすればよいですか?

データベースからクエリされたツリー構造データを配列に循環的に割り当てるにはどうすればよいですか?

WBOY
WBOYオリジナル
2016-06-23 14:21:22883ブラウズ

//データベース 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 foreach ($alldata[$i] as $ key=>$r) {
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 $data[$i] = $row[$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[$i][$j] = $row2[$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

mysql_fetch_array

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:XMLに関する質問次の記事:XMLに関する質問