Burada i genel amaçlı ana kök $ depId altında depIds bir dizi almak için değil, bir fonksiyon yazdım.
i dizisini almak için yineleme yöntemi kullanın:
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);
}
Burada belirtilen $ depId çocuk bölümü olup olmadığını kontrol etmek hasChildNode işlevi:
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;
}
i depid.but bir 1D dizi dönmek gerektiğini düşünüyorum bakarken zaman aramalar:
$this->getEmpsByDep(0);
Böyle garip bir 2D dizi döndüğünüzde değişim "dönüş" getEmpsByDep fonksiyonunda "var_dump" için:
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"
}
Burada tablo yapısı ve veri örnek:
$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)";
böylece bir kelime, nasıl ben 1D dizi bu işlevin doğru kodu düşünce alabilirim?