假如你所說的二叉樹是指這種的話

作為一家“創(chuàng)意+整合+營銷”的成都網站建設機構,我們在業(yè)內良好的客戶口碑。創(chuàng)新互聯公司提供從前期的網站品牌分析策劃、網站設計、成都網站建設、網站設計、創(chuàng)意表現、網頁制作、系統(tǒng)開發(fā)以及后續(xù)網站營銷運營等一系列服務,幫助企業(yè)打造創(chuàng)新的互聯網品牌經營模式與有效的網絡營銷方法,創(chuàng)造更大的價值。
那么你的數據結構一定要滿足一個條件,則每一條數據必須記錄好父級的標識
?php
$data?=?array(
array(
'id'?=?1,
'pid'?=?0,
'name'?=?""新建腦圖,
),
array(
'id'?=?2,
'pid'?=?1,
'name'?=?"分支主題",
),
array(
'id'?=?3,
'pid'?=?1,
'name'?=?"分支主題",
),
);
?
上述二位數組中的 id為2,3的子數組的父級(pid)id均是1,則他們的父級就是id為1的數組
?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)過后,對應二叉樹關系的數組就可以做出來了
當然上述代碼只能進行到二級二叉樹,如果想做出無限級二叉樹的數組,則必須使用到遞歸函數了
PS:上述代碼是網頁里手打的,沒經過測試,但思路肯定是沒問題的哈
php的兩大oop使用型函數:構造函數(__construct)和析構函數(__destruct );
構造函數:當在某一頁面寫了眾多函數,其中就包括構造函數,當你調用其中任一函數時,都將在調用此函數前先調用構造函數,如:你把鏈接數據庫代碼寫到構造函數里面,然后在使用增刪改查時,就不用再寫連接s數據庫語句了,因為有構造函數在,你就只用寫增刪改查類sql語句就可以了。
析構函數:和構造函數相反,在同一頁面內,有眾多函數,其中有析構函數,當你調用了某一函數之后,會自動執(zhí)行析構函數,比如說你的增刪改查用完了,是不是要關閉數據庫連接來釋放內存?析構函數就是這樣用的。
你做好程序以后,把數據庫導出成sql文件
1、連接數據庫
2、讀取這個sql文件里的sql語句,并執(zhí)行
3、生成一個數據庫連接參數的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?{
//數據庫連接
protected?$connect?=?null;
//數據庫對象
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;
//連接數據庫
$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());
}
//導入sql文件
public?function?Import($url)?{
$this-sqlFile?=?file_get_contents($url);
if?(!$this-sqlFile)?{
exit("打開文件錯誤");
}?else?{
$this-GetSqlArr();
if?($this-Runsql())?{
return?true;
}
}
}
//獲取sql語句數組
public?function?GetSqlArr()?{
//去除注釋
$str?=?$this-sqlFile;
$str?=?preg_replace('/--.*/i',?'',?$str);
$str?=?preg_replace('/\/\*.*\*\/(\;)?/i',?'',?$str);
//去除空格?創(chuàng)建數組
$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語句錯誤:第"?.?$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版本中是要可以使用全數字表名的。
建議在表名中加界定符(`)即:鍵盤上Tab上面那個鍵打出來的字符。
如:
CREATE TABLE `201205` (
`id` bigint(20) DEFAULT NULL
)
另外:
MySQL對命名數據庫和MySQL表命名有一個原則:
1)名字可以由當前字符集中的任何字母數字字符組成,下劃線和美元符?$也可以。
2)名字最長為64個字符。
然而,因為數據庫和表的名字對應于目錄和文件名,服務器運行的操作系統(tǒng)可能強加額外的限制。
                當前標題:php數據構造 php結構
                
                轉載注明:http://chinadenli.net/article34/doecspe.html
            
成都網站建設公司_創(chuàng)新互聯,為您提供品牌網站制作、軟件開發(fā)、品牌網站建設、網站設計、商城網站、微信小程序
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯