Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 仅当我使用var_dump或echo时才设置变量get,而不使用调试器断点_Php_Codeigniter_Xdebug - Fatal编程技术网

Php 仅当我使用var_dump或echo时才设置变量get,而不使用调试器断点

Php 仅当我使用var_dump或echo时才设置变量get,而不使用调试器断点,php,codeigniter,xdebug,Php,Codeigniter,Xdebug,所以我从我的php代码中得到了这种奇怪的行为 public function index() { $interval = (int)('60'); // echo $interval; // If I uncomment and put a breakpoint above, // I can see the variable $interval value in my debugger. // But without an 'echo' or 'var_dump' sta

所以我从我的php代码中得到了这种奇怪的行为

public function index() {
  $interval = (int)('60');
  // echo $interval;
  // If I uncomment and put a breakpoint above, 
  // I can see the variable $interval value in my debugger.
  // But without an 'echo' or 'var_dump' statement, 
  // value is not getting set in $interval.
  die;
}
当我使用'echo'或'var_dump'将$interval变量写入输出流时,$interval变量正确显示并设置。 但是,如果我在间隔初始化后使用调试器中断执行,而不是写入输出流,则不会设置变量

下面是调试器屏幕截图

这很有效

这不是

你知道为什么会有这种奇怪的行为吗?如果我在一个单独的php文件中运行它,就没有问题了。问题只存在于Codeigniter实例内部

PHP版本:7.2.8
代码点火器:3.1.5
“知道为什么会有这种奇怪的行为吗?”优化?。。如果变量在初始化之后不会在任何地方使用,为什么还要费心保留它呢?另外,请尝试禁用OPCache--可能会看到不同的行为。@LazyOne我正在使用codeigniter框架。index()函数是默认路由。这只是另一个函数的一部分。在该函数中,$interval变量用于多种用途。需要进一步澄清吗?我只是想知道为什么这个代码会这样。这只是为了让我了解它是如何工作的。顺便说一句,我将尝试禁用OPCache。“在该函数中,$interval变量用于多种用途。需要更多说明吗?”我在您的代码示例中没有看到类似的内容。顺便说一句,当我说“为什么麻烦”时,是关于Xdebug/PHP做了什么而不是你。如果PHP/Xdebug发现以后没有使用局部变量。。。那就没有保留它的真正意义了。。。其他语言/IDE也会做类似的事情(比如Delphi调试器),我很麻烦,因为我无法访问该变量。我需要这个值来插入数据库字段。“我很麻烦,因为我无法访问该变量。”1)你误解了我的意思2)你迄今为止展示的屏幕截图(代码)表明这种优化是有意义的。如果在您的真实代码中,它也会这样做。。那么您的代码中一定有错误/输入错误。。。但我不能肯定这一点,因为我看不到您真正的代码。index()函数正在调用并中断断点。请查看屏幕截图。您应该在此处尝试类myClass{public function{uuuu toString(){//custom var_dump()content,然后输出它}}$myClass=new myClass();echo$myClass;请参见,索引函数已在调用。我不是问如何调用该函数。:)另外,我不想输出$interval变量。我需要用于更新数据库字段的变量值。