Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.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:变量突然为空_Php - Fatal编程技术网

PHP:变量突然为空

PHP:变量突然为空,php,Php,我的数据变量突然为空。 它直接发生在IF语句之后,当时没有向该变量写入任何内容。有人知道这里发生了什么吗 public function render() { ob_start(); if($this->ajax) $ext = '.ajax'; else if(file_exists($this->scriptPath.$this->template.'.mst')) $e

我的数据变量突然为空。 它直接发生在IF语句之后,当时没有向该变量写入任何内容。有人知道这里发生了什么吗

public function render()
    {
        ob_start();
        if($this->ajax)
            $ext = '.ajax';
        else if(file_exists($this->scriptPath.$this->template.'.mst'))
            $ext = '.mst';
        else
            $ext = '.phtml';
        #var_dump($this->data); // <-- is filled with many data
        if($ext === '.mst'){
            var_dump($this->data); // <-- is null
            $mustache = new \Mustache_Engine(
                array(
                    'escape' => function($value){return $value;},
                    'partials_loader' => new \Mustache_Loader_FilesystemLoader(dirname(__FILE__).'/../../../frontendTarget/classes/lib/de/preis/frontend/viewFragments/partials',array('extension' => 'mst'))
                )
            );
            $content = file_get_contents($this->scriptPath.$this->template.$ext);
            $content = $mustache->render(($content),$this->data);
            echo $content;
        } else {
            include $this->scriptPath.$this->template.$ext;
        }
        return ob_get_clean();
    }
公共函数render()
{
ob_start();
如果($this->ajax)
$ext='.ajax';
else如果(文件_存在($this->scriptPath.$this->template.'.mst'))
$ext='.mst';
其他的
$ext='.phtml';
#var_dump($this->data);//data);//函数($value){return$value;},
'partials\u loader'=>new\Mustache\u loader\u FilesystemLoader(dirname(\uu FILE\uu)。'/../../../../../../frontendTarget/classes/lib/de/preis/frontend/viewFragments/partials',数组('extension'=>'mst'))
)
);
$content=file\u get\u contents($this->scriptPath.$this->template.$ext);
$content=$mustache->render($content),$this->data);
echo$内容;
}否则{
包括$this->scriptPath.$this->template.$ext;
}
返回ob_get_clean();
}
我这里有两个变量转储()。一个在if之前,var中充满数据,另一个在if之后,数据突然完全消失

有人能在这件事上帮我吗?
提前感谢

与其说是回答,不如说是吸取了教训

我曾经有过这样一个问题,它看起来像一个真正的谜,我花了很长时间才弄明白,因为当时它没有任何意义。我的回答是,我正在使用netbeans调试器运行代码,之前我设置了一个手表来清除(
unset()
)一个变量,以允许我调试代码段-我忘记了删除手表,所以它在调试会话期间执行,并且
null
ing我的变量

感谢@weezel的提示。 我仔细检查了我的代码,发现类方法被调用了两次。在第一种情况下,给出了数据,而在第二种情况下则没有。
在我的特定案例中,我有一个MVC模型,其中首先呈现布局(有数据),然后呈现视图(没有数据)。我需要的是视图中的数据,而不是布局。因此,我只需将数据传递到正确的层。

var\u dump($this->data)时返回数据,
$ext
的值是多少?可能当值为
'.mst'
时,如果您取消注释第一个
var_dump()
,那么它们都会转储数据,那么您是否会使用数据获取第一个,而第二个显示为空?或者您是否运行两次代码,对每个
var\u dump()
in/out进行注释,以便只执行其中的一个?是否可能重复@Nerea值为'.mst',否则第二个变量转储将根本无法运行@WeeZel我没有提到,但我检查了“重复问题”的答案和类似问题的答案。他们没有帮助。我运行了两次代码,一个
var\u dump
in,一个out。我只是用这两个输入再次运行它,并意识到我得到了第一个输出的数据和第一个输出的第二个输出,其中它是空的。也许你说得对。我会跟进这些新信息。很高兴你了解了真相:)