Foreach,并通过ID获取名称不返回任何内容

时间:2018-05-17 08:57:39

标签: php html

所以,我要发布更多代码来解释我的问题:

class Projects{
private $project_id;
private $project_name;
private $project_state;

public function SetAllProject($id_projcet,$name_projcet,$state_project){
 $this->project_id= $id_projcet;
 $this->project_name= $name_projcet;
 $this->project_state= $state_project;
}

在我网站的索引页面中,我得到了所有项目,我这样存储:

while($dataProjet = mysqli_fetch_array($rs)){
$ObjProjet->SetAllProject($dataProjet["project_id"],$dataProjet["project_name"],$dataProjet["project_state"]);
$arrObjProject[$i] = $ObjProject; 
$i++;

我的目标是使用他的ID获取项目名称。用:

public function getProjetNameByID($p_id){
     foreach($this->project_id as $idproj)
     {
         if($idproj == $p_id){
             return $this->project_name;
         }

    }
    return null;
}

但它总是返回null ... 谢谢你的帮助!

2 个答案:

答案 0 :(得分:1)

你的其他条件错了。您将检查第一个if语句,如果它是错误的,那么您将进入else这将return null,将你踢出去,如果没有什么是你可以返回null发现在你的foreach:

 public function getProjetNameByID($p_id){
     foreach($this->project_id as $idproj)
     {
         if($idproj == $p_id){
             return $this->project_name;
         }

    }
    return null;
}

根据@Cid的建议,你的第二个问题的解决方案是使用你的项目数组,因为你已经拥有了这个项目,这样:

 public function getProjetNameByID($p_id){
     foreach($arrObjProject as $proj)
     {
         if($proj->project_id == $p_id){
             return $proj->project_name;
         }

    }
    return null;
}

答案 1 :(得分:1)

考虑到你在评论中所说的内容,你试图循​​环一个不可能的简单变量。

您已经从数据库构建了一个项目对象数组,这就是您必须迭代的内容。

function getProjetNameByID($p_id, $ArrayOfProjects) {
    foreach($ArrayOfProjects as $ObjProject)
     {
         if($ObjProject->project_id == $p_id)
             return $ObjProject->project_name;
    }
    return null;
}

$nameofproject = getProjetNameByID(1, $arrObjProject);
echo "The name of the project is : $nameofproject";