作为标题,我在PHP / Yii项目中创建一个模型,并创建如下方法:
public function getRootId($id, $module) {
$com = Yii::app()->db->createCommand()->select('pid,id')
->from($this->tableName())
->where('id=:id', array(':id' => $id))
->andWhere('module=:module', array(':module' => $module))
->queryRow();
if ($com['pid'] == 0 || empty($com['pid'])) {
return $com['pid'];
} else {
$this->getRootId($com['pid'], $module);
}
}
但是我无法获得可以在返回之前成功转储的返回值。然后,我添加一个静态致敬$ _itmes
private static $_items;
并更新如下代码:
public function getRootId($id, $module) {
$com = Yii::app()->db->createCommand()->select('pid,id')
->from($this->tableName())
->where('id=:id', array(':id' => $id))
->andWhere('module=:module', array(':module' => $module))
->queryRow();
if ($com['pid'] == 0 || empty($com['pid'])) {
self::$_times = $com['id'];
} else {
$this->getRootId($com['pid'], $module);
}
}
然后使用self :: $ _ items可以获得目标值。
朋友,谁能告诉我发生了什么?
答案 0 :(得分:0)
你需要在else
案件中返回..
return $this->getRootId($com['pid'], $module);
var_dump和静态赋值工作的原因是因为它是递归调用,当调用它时会打印/分配,但是如果返回,你需要最终返回值..