我在这里与Laravel合作(半无关紧要),我遇到了一个我以前从未见过的奇怪的PHP问题。我收到此错误的例外:
isset中的非法偏移类型或空
代码位于Laravel框架中( Illuminate \ View \ Factory.php ),抛出错误的相关代码段为:
if (isset($this->aliases[$view])) $view = $this->aliases[$view];
现在,我了解如果您将数组或对象作为数组键传递,它将抛出该错误。但是,我抛弃了$this->aliases
并收到了:
array(0) { }
抛弃$view
并收到:
string(11) "layouts.app"
因此,无论数组是否为空,对isset
的调用只会返回false,因为未设置字符串键。
我不相信这应该是一个错误,但是php.ini中有一个设置会导致我可以改变的严格错误,或者我只是不理解{{1的基本操作方法?
修改
这必须与Mihai Stancu在下面的评论有关。我刚刚对此进行了测试,并且没有例外地工作正常:
isset()
按预期输出“Nope”。
答案 0 :(得分:-2)
只需声明$something = aliases[$view]
并将其解析为字符串然后
if (isset($this->$something))