ホームページ > バックエンド開発 > PHPチュートリアル > データベースクエリ結果から多次元配列を構築するソリューション

データベースクエリ結果から多次元配列を構築するソリューション

WBOY
リリース: 2016-06-13 12:59:42
オリジナル
1369 人が閲覧しました

多次元配列を構築するためのデータベース クエリの結果
前のデータベース クエリの結果から多次元配列を構築したいと思います。データベース クエリの最初の結果はネストの最初のレベルに対応し、2 番目の結果はネストに対応します。ネストの第 2 レベルに相当します。どうやって行うのですか。私は初心者であることをあらかじめ宣言しておきます。

<br />
// 查询变量<br />
			<br />
		$sql1 = "select remark,name from arp_careset where typegroup ='dissect-position' order by id"; <br />
		$rs1 = mysql_query($sql1); <br />
		<br />
		while($r1 = mysql_fetch_assoc($rs1)) <br />
		{ echo  $r1['name']; <br />
		<br />
		$sql = "select group_concat(name) as name from arp_careset where typegroup <>'dissect-position' and typegroup like '%".$r1["remark"]."%' order by id";<br />
		$rs = mysql_query($sql); <br />
		<br />
		while($r = mysql_fetch_array($rs)) <br />
		{ $ar = explode(',', $r['name']); <br />
		echo join(' ', $ar); <br />
		} }<br />
			//构建数组<br />
			<br />
$mem = array(<br />
	array<br />
	(<br />
		 lang_show(''),<br />
		array<br />
		(<br />
		// 嵌套开始<br />
			array(<br />
			lang_show('account_manager'),<br />
			//第二层嵌套<br />
				array(<br />
					'group_list.php,1',<br />
				)<br />
			//第二层嵌套结束	<br />
			),<br />
		// 嵌套结束<br />
		)  <br />
	),<br />
);		
ログイン後にコピー

-----解決策--------------------------------
あなたのデータ整理はあなたに与えます 読み出すことは多くの不便をもたらします
このように書きます
$rs = mysql_query("select name, SUBSTRING_INDEX(typegroup,'-',-1) as secondary, remark from arp_careset where SUBSTRING_INDEX(typegroup,'-',1)='dissect'");<br />
while($r = mysql_fetch_assoc($rs)) {<br />
  echo $r['name']. '<br />';<br />
  $rs1 = mysql_query("select name, SUBSTRING_INDEX(typegroup,'-',-1) as secondary, remark from arp_careset where SUBSTRING_INDEX(typegroup,'-',1)='$r[secondary]' and SUBSTRING_INDEX(typegroup,'-',-1) = '$r[remark]'");<br />
  while($r = mysql_fetch_assoc($rs1)) {<br />
    echo $r['name'] . ' ';<br />
  }<br />
  echo '<br />';<br />
}
ログイン後にコピー


体表
栄養状態 分泌物 被毛 皮膚 目/眼窩 手足/尾 乳腺 外性器 肛門
リンパ節
腋窩リンパ節 頸部リンパ節 鼠径リンパ節 肺リンパ節 腸リンパ節
頭と首
まぶた/角膜/瞳孔 歯/歯茎 耳 鼻 髄膜/全脳 頭蓋骨 唾液腺 食道 気管 甲状腺

胸壁、横隔膜/縦隔、心臓、大動脈弓、肺、気管支
腹部
腹部 腸間膜 脾臓 膵臓 腎臓

-----解決策---------------------------- ---
「データの整理が不十分である」と言えるのはなぜですか?
メイングループ typegroup には 2 つのカテゴリの情報が含まれています
「隣接リスト アルゴリズム」によれば、カテゴリ情報は 1 つだけ含める必要があります
データから判断すると、表現の所有権を一意に確認するには、typegroup と review の 2 つのフィールドを使用する必要があります
これは実際には「隣接リスト アルゴリズム」です

SUBSTRING_INDEX 関数を使用してタイプグループを分割し、カテゴリ情報を取得できるようになりました
ただし、SUBSTRING_INDEX 関数は mysql 独自のものです。将来何らかの理由でデータベースシステムが変更された場合、コードの修正量が膨大になる可能性があります

分割作業をphpに任せることもできますが、「いいね!」が多いとクエリ効率が低下します
プログラムも肥大化しているようです
-----解決策---------
マルチ次元配列

$res = array(); //これは結果の配列です<br>
$rs = mysql_query("名前、SUBSTRING_INDEX(typegroup,'-',-1) をセカンダリとして選択、arp_careset からのコメント、SUBSTRING_INDEX(typegroup,'-',1)='dissect'");<br>
while($r = mysql_fetch_assoc($rs)) {<br>
$tmp = array() //一時配列を初期化します<br>
$rs1 = mysql_query("名前、SUBSTRING_INDEX(typegroup,'-',-1) をセカンダリとして選択、arp_careset からのコメント SUBSTRING_INDEX(typegroup,'-',1)='$r[secondary]' および SUBSTRING_INDEX(typegroup, '-',-1) = '$r[備考]'"); <div class="clear"></div>
ログイン後にコピー
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート