我正在创建一个函数,它将根据输入的字符串返回一个slug,如果数据库中存在一个slug,它将附加一个数字 - $ num,我正在使用codeigniter,
当我死掉变量时,它会在_generate_slug上返回正确的slug,它会返回正确的值,但当我在index函数上死时它会返回空白;
这是我的功能
控制器/ test.php的
public function index()
{
echo $this->_generate_slug('test');
}
protected function _generate_slug($string,$cntr = 0)
{
if($cntr == 0){
$slug = create_slug($string);
}else{
$slug = create_slug($string).'-'.$cntr;
}
if($this->test_model->slug_exist($slug)){
$cntr++;
$this->_generate_slug($string,$cntr);
}else{
return $slug;
}
}
助手/ test.php的
function create_slug($string)
{
$slug = strtolower( $string );
$slug = str_replace('&','and',$slug);
$slug = preg_replace('/[%\'"``]/', '', $slug);
$slug = preg_replace('/[^a-zA-Z0-9-]/','-',$slug);
$slug = preg_replace("/[-]+/", "-", $slug);
$slug = trim($slug, '-');
return $slug;
}
答案 0 :(得分:0)
您收到NULL
,因为您没有在递归中返回值。它应该是:
return $this->_generate_slug($string,$cntr);
但是就像评论中提到的那样,你在这里使用递归是很奇怪的。
而且,我不熟悉CodeIgniter中的代码样式,但是以下划线开头命名受保护的方法似乎是一种不好的做法。