Php 使用控制器内部功能的codeigniter
由于某些原因,我无法在停止后运行Php 使用控制器内部功能的codeigniter,php,codeigniter,function,controller,Php,Codeigniter,Function,Controller,由于某些原因,我无法在停止后运行change()函数和所有操作。我尝试使用$this->change(),但效果相同。如果我在一个php文件中运行这个函数,它的工作状态和num会发生变化 class Test extends CI_Controller { function __construct(){ parent::__construct(); } public function home(){ $num = 1;
change()
函数和所有操作。我尝试使用$this->change()
,但效果相同。如果我在一个php文件中运行这个函数,它的工作状态和num会发生变化
class Test extends CI_Controller {
function __construct(){
parent::__construct();
}
public function home(){
$num = 1;
change($num);
function change($num,$rand=false){
echo 'inside function'; // this is not shown
if($num < 4) {
$rand = rand(1,9);
$num = $num.$rand;
change($num,$rand);
} else {
echo $num;
}
}
echo 'done'; // this is not shown
}
}
类测试扩展CI_控制器{
函数_u构造(){
父项::_构造();
}
公共功能之家(){
$num=1;
变动(单位:元);
函数更改($num,$rand=false){
echo“inside function”;//未显示此项
如果($num<4){
$rand=兰特(1,9);
$num=$num.$rand;
更改($num,$rand);
}否则{
echo$num;
}
}
echo'done';//未显示此项
}
}
lol,您正在尝试在函数中编写函数
尝试使用此代码运行类
class Test extends CI_Controller {
function __construct(){
parent::__construct();
}
public function home(){
$num = 1;
$this->change($num);
echo 'done'; // this is not shown
}
public function change($num,$rand=false){
echo 'inside function'; // this is not shown
if($num < 4) {
$rand = rand(1,9);
$num = $num.$rand;
change($num,$rand);
} else {
echo $num;
}
}
}
类测试扩展CI_控制器{
函数_u构造(){
父项::_构造();
}
公共功能之家(){
$num=1;
$this->change($num);
echo'done';//未显示此项
}
公共函数更改($num,$rand=false){
echo“inside function”;//未显示此项
如果($num<4){
$rand=兰特(1,9);
$num=$num.$rand;
更改($num,$rand);
}否则{
echo$num;
}
}
}
调用私有或公共函数来处理数据(或对于更复杂/涉及的过程,调用库)可能会更好
即
类测试扩展CI_控制器
{
公共函数构造()
{
父项::_构造();
}
公共功能之家()
{
$num=1;
echo$this->\u更改($num);
echo'done';//未显示此项
}
//私有或公共是不带下划线的
//最好使用private,这样CI就不会路由到此函数
私有函数更改($num,$rand=FALSE)
{
如果($num<4){
$rand=兰特(1,9);
$num=$num+$rand;
$this->\更改($num,$rand);
}否则{
返回$num;
}
}
}
如果您要否决投票,请给出原因。num是否应该是浮点int类型?使用“.”不会使字符串连接发生这种情况,只需将函数带到外部。。。。它将像一个符咒一样工作。这是一个更好的实现。我更新了代码,因为您使用的是递归。请确保您的函数实际上是通过在else子句中使用die()或var_dump来创建堆栈的。
class Test extends CI_Controller
{
public function __construct()
{
parent::__construct();
}
public function home()
{
$num = 1;
echo $this->_change($num);
echo 'done'; // this is not shown
}
// private or public is w/o the underscore
// its better to use private so that CI doesn't route to this function
private function _change($num, $rand = FALSE)
{
if($num < 4) {
$rand = rand(1,9);
$num = $num + $rand;
$this->_change($num,$rand);
} else {
return $num;
}
}
}