所以,我要发布更多代码来解释我的问题:
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 ... 谢谢你的帮助!
答案 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";