假如你所說的二叉樹是指這種的話
作為一家“創(chuàng)意+整合+營銷”的成都網(wǎng)站建設(shè)機(jī)構(gòu),我們在業(yè)內(nèi)良好的客戶口碑。創(chuàng)新互聯(lián)公司提供從前期的網(wǎng)站品牌分析策劃、網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、創(chuàng)意表現(xiàn)、網(wǎng)頁制作、系統(tǒng)開發(fā)以及后續(xù)網(wǎng)站營銷運(yùn)營等一系列服務(wù),幫助企業(yè)打造創(chuàng)新的互聯(lián)網(wǎng)品牌經(jīng)營模式與有效的網(wǎng)絡(luò)營銷方法,創(chuàng)造更大的價(jià)值。
那么你的數(shù)據(jù)結(jié)構(gòu)一定要滿足一個(gè)條件,則每一條數(shù)據(jù)必須記錄好父級的標(biāo)識(shí)
?php
$data?=?array(
array(
'id'?=?1,
'pid'?=?0,
'name'?=?""新建腦圖,
),
array(
'id'?=?2,
'pid'?=?1,
'name'?=?"分支主題",
),
array(
'id'?=?3,
'pid'?=?1,
'name'?=?"分支主題",
),
);
?
上述二位數(shù)組中的 id為2,3的子數(shù)組的父級(pid)id均是1,則他們的父級就是id為1的數(shù)組
?php
foreach($data?as?$key=$value){
if(?$value['pid']?==?'0'){
$parent[]?=?$value;
unset($data[$key]);
}?
}
foreach($parent?as?$key=$value){
foreach($data?as?$k=$v){
if(?$v['pid']?==?$value['id']?){
$parent[$key]['_child'][]?=?$v;
unset($data[$k]);
}?
}
}
?
通過以上循環(huán)過后,對應(yīng)二叉樹關(guān)系的數(shù)組就可以做出來了
當(dāng)然上述代碼只能進(jìn)行到二級二叉樹,如果想做出無限級二叉樹的數(shù)組,則必須使用到遞歸函數(shù)了
PS:上述代碼是網(wǎng)頁里手打的,沒經(jīng)過測試,但思路肯定是沒問題的哈
php的兩大oop使用型函數(shù):構(gòu)造函數(shù)(__construct)和析構(gòu)函數(shù)(__destruct );
構(gòu)造函數(shù):當(dāng)在某一頁面寫了眾多函數(shù),其中就包括構(gòu)造函數(shù),當(dāng)你調(diào)用其中任一函數(shù)時(shí),都將在調(diào)用此函數(shù)前先調(diào)用構(gòu)造函數(shù),如:你把鏈接數(shù)據(jù)庫代碼寫到構(gòu)造函數(shù)里面,然后在使用增刪改查時(shí),就不用再寫連接s數(shù)據(jù)庫語句了,因?yàn)橛袠?gòu)造函數(shù)在,你就只用寫增刪改查類sql語句就可以了。
析構(gòu)函數(shù):和構(gòu)造函數(shù)相反,在同一頁面內(nèi),有眾多函數(shù),其中有析構(gòu)函數(shù),當(dāng)你調(diào)用了某一函數(shù)之后,會(huì)自動(dòng)執(zhí)行析構(gòu)函數(shù),比如說你的增刪改查用完了,是不是要關(guān)閉數(shù)據(jù)庫連接來釋放內(nèi)存?析構(gòu)函數(shù)就是這樣用的。
你做好程序以后,把數(shù)據(jù)庫導(dǎo)出成sql文件
1、連接數(shù)據(jù)庫
2、讀取這個(gè)sql文件里的sql語句,并執(zhí)行
3、生成一個(gè)數(shù)據(jù)庫連接參數(shù)的php文件
?php
$con?=?mysql_connect("localhost","peter","abc123");
if?(!$con)
{
die('Could?not?connect:?'?.?mysql_error());
}
if?(mysql_query("CREATE?DATABASE?my_db",$con))
{
echo?"Database?created";
}
else
{
echo?"Error?creating?database:?"?.?mysql_error();
}
mysql_close($con);
?
?php
class?ReadSql?{
//數(shù)據(jù)庫連接
protected?$connect?=?null;
//數(shù)據(jù)庫對象
protected?$db?=?null;
//sql文件
public?$sqlFile?=?"";
//sql語句集
public?$sqlArr?=?array();
public?function?__construct($host,?$user,?$pw,?$db_name)?{
$host?=?empty($host)???C("DB_HOST")?:?$host;
$user?=?empty($user)???C("DB_USER")?:?$user;
$pw?=?empty($pw)???C("DB_PWD")?:?$pw;
$db_name?=?empty($db_name)???C("DB_NAME")?:?$db_name;
//連接數(shù)據(jù)庫
$this-connect?=?mysql_connect($host,?$user,?$pw)?or?die("Could?not?connect:?"?.?mysql_error());
$this-db?=?mysql_select_db($db_name,?$this-connect)?or?die("Yon?can?not?select?the?table:"?.?mysql_error());
}
//導(dǎo)入sql文件
public?function?Import($url)?{
$this-sqlFile?=?file_get_contents($url);
if?(!$this-sqlFile)?{
exit("打開文件錯(cuò)誤");
}?else?{
$this-GetSqlArr();
if?($this-Runsql())?{
return?true;
}
}
}
//獲取sql語句數(shù)組
public?function?GetSqlArr()?{
//去除注釋
$str?=?$this-sqlFile;
$str?=?preg_replace('/--.*/i',?'',?$str);
$str?=?preg_replace('/\/\*.*\*\/(\;)?/i',?'',?$str);
//去除空格?創(chuàng)建數(shù)組
$str?=?explode(";\n",?$str);
foreach?($str?as?$v)?{
$v?=?trim($v);
if?(empty($v))?{
continue;
}?else?{
$this-sqlArr[]?=?$v;
}
}
}
//執(zhí)行sql文件
public?function?RunSql()?{
foreach?($this-sqlArr?as?$k?=?$v)?{
if?(!mysql_query($v))?{
exit("sql語句錯(cuò)誤:第"?.?$k?.?"行"?.?mysql_error());
}
}
return?true;
}
}
//范例:
header("Content-type:text/html;charset=utf-8");
$sql?=?new?ReadSql("localhost",?"root",?"",?"log_db");
$rst?=?$sql-Import("./log_db.sql");
if?($rst)?{
echo?"Success!";
}
?
我在windows XP和Linux Centos 4.8系統(tǒng)中mysql5.1.30版本中是要可以使用全數(shù)字表名的。
建議在表名中加界定符(`)即:鍵盤上Tab上面那個(gè)鍵打出來的字符。
如:
CREATE TABLE `201205` (
`id` bigint(20) DEFAULT NULL
)
另外:
MySQL對命名數(shù)據(jù)庫和MySQL表命名有一個(gè)原則:
1)名字可以由當(dāng)前字符集中的任何字母數(shù)字字符組成,下劃線和美元符?$也可以。
2)名字最長為64個(gè)字符。
然而,因?yàn)閿?shù)據(jù)庫和表的名字對應(yīng)于目錄和文件名,服務(wù)器運(yùn)行的操作系統(tǒng)可能強(qiáng)加額外的限制。
當(dāng)前標(biāo)題:php數(shù)據(jù)構(gòu)造 php結(jié)構(gòu)
轉(zhuǎn)載注明:http://muchs.cn/article34/doecspe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作、軟件開發(fā)、品牌網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、商城網(wǎng)站、微信小程序
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)