這裏我寫了一個函數,它的通用目的是獲得父根下的depId $ depId的數組。在PHP中的奇怪數組
我使用遞歸的方法來獲取數組:
public function getEmpsByDep($depId){
$query = "select * from ".SQLPREFIX."department where id_parent=".$depId;
$stmt=$this->db->query($query);
while(($row=$this->db->fetch_assoc($stmt))==true)
{
if($this->hasChildNode($row['DEPID']))
{
$depId = $row['DEPID'];
self::getEmpsByDep($depId);
}
else
{
$arr[]=$row['DEPID'];
}
}
return ($arr);
}
這裏是檢查hasChildNode功能如果指定$ DEPID有子部門:
public function hasChildNode($depId)
{
$query = "select * from ".SQLPREFIX."department where id_parent=".$depId;
$stmt=$this->db->query($query);
$row=$this->db->fetch_assoc($stmt);
if($row==false){
return false;
}else
return true;
}
,而我認爲它應該返回一維數組的電話:
$this->getEmpsByDep(0);
它返回一個奇怪的二維數組像這樣w母雞變化getEmpsByDep功能「迴歸」到「的var_dump」:
array(4) {
[0]=>
string(2) "11"
[1]=>
string(2) "12"
[2]=>
string(2) "13"
[3]=>
string(2) "14"
}
array(3) {
[0]=>
string(2) "19"
[1]=>
string(2) "20"
[2]=>
string(2) "21"
}
array(3) {
[0]=>
string(2) "15"
[1]=>
string(2) "16"
[2]=>
string(2) "17"
}
array(8) {
[0]=>
string(1) "2"
[1]=>
string(1) "4"
[2]=>
string(1) "5"
[3]=>
string(1) "6"
[4]=>
string(1) "7"
[5]=>
string(1) "8"
[6]=>
string(1) "9"
[7]=>
string(2) "10"
}
這裏是表結構和數據樣本:
$query[]="create table ".$sqltblpre."department(
depId number(10) not null primary key,
depName varchar2(50) not null,
id_parent number(10)
)";
//department(部門和崗位)
$index=1;
$query[] = "INSERT INTO ".$sqltblpre."department values(".$index++.",'院部',0)"; //1
$query[] = "INSERT INTO ".$sqltblpre."department values(".$index++.",'政治部',0)"; //2
$query[] = "INSERT INTO ".$sqltblpre."department values(".$index++.",'醫務部',0)"; //3
$query[] = "INSERT INTO ".$sqltblpre."department values(".$index++.",'護理部',0)"; //4
$query[] = "INSERT INTO ".$sqltblpre."department values(".$index++.",'經濟部',0)"; //5
$query[] = "INSERT INTO ".$sqltblpre."department values(".$index++.",'信息科',0)"; //6
$query[] = "INSERT INTO ".$sqltblpre."department values(".$index++.",'醫學工程科',0)";
$query[] = "INSERT INTO ".$sqltblpre."department values(".$index++.",'門診系統',0)";
$query[] = "INSERT INTO ".$sqltblpre."department values(".$index++.",'內科系統',0)";
$query[] = "INSERT INTO ".$sqltblpre."department values(".$index++.",'外科系統',0)";
$query[] = "INSERT INTO ".$sqltblpre."department values(".$index++.",'院長',1)";
$query[] = "INSERT INTO ".$sqltblpre."department values(".$index++.",'政委',1)";
$query[] = "INSERT INTO ".$sqltblpre."department values(".$index++.",'副院長',1)";
$query[] = "INSERT INTO ".$sqltblpre."department values(".$index++.",'祕書',1)";
$query[] = "INSERT INTO ".$sqltblpre."department values(".$index++.",'主任',3)";
$query[] = "INSERT INTO ".$sqltblpre."department values(".$index++.",'副主任',3)";
$query[] = "INSERT INTO ".$sqltblpre."department values(".$index++.",'助理員',3)";
$query[] = "INSERT INTO ".$sqltblpre."department values(".$index++.",'訓練隊',3)"; //18
$query[] = "INSERT INTO ".$sqltblpre."department values(".$index++.",'隊長',18)";
$query[] = "INSERT INTO ".$sqltblpre."department values(".$index++.",'助理員',18)";
$query[] = "INSERT INTO ".$sqltblpre."department values(".$index++.",'隊員',18)";
這麼一句話,我怎麼能得到一維數組認爲這個函數的正確的代碼?
太多的代碼,對不起。嘗試縮小它。 – 2010-05-12 08:42:53
@ Lo'oris,我必須對這個問題做一個詳細的解釋,否則恐怕有人無法得到它。 – tunpishuang 2010-05-12 08:46:51