人民,我对这是我还是我的计算机运行缓慢感到怀疑.
我下面的代码片段:
class Whatever
{
...
private function requireFile($filePath)
{
if(is_array($filePath))
foreach($filePath as $singleFilePath)
if($this->requireFile($singleFilePath))
break;
elseif(($filePath = stream_resolve_include_path($filePath = $filePath . '.PHP')) !== false)
return require_once $filePath;
}
}
除了是丑陋的代码,它无法按预期工作.
这里的想法是使该方法接受字符串和字符串数组作为参数,并且在数组的情况下,递归自身以处理每个字符串.
发生的事情是,当提供数组作为参数时,if和elseif块均被执行,从而使PHP解析器大喊它正在elseif行中进行数组到字符串的转换.
我不明白为什么在if块周围添加括号(将其放在foreach或内部,如果什么都没改变的话)会使所有内容像咒符一样工作,因为在下面只有一个语句if,因此不需要它们那里:
class Whatever
{
...
private function requireFile($filePath)
{
if(is_array($filePath)) {
foreach($filePath as $singleFilePath)
if($this->requireFile($singleFilePath))
break;
} elseif(($filePath = stream_resolve_include_path($filePath = $filePath . '.PHP')) !== false)
return require_once $filePath;
}
}
有人可以帮我吗?这段代码有什么问题?
编辑:谢谢大家.我想你的答案证明那是我在这里慢的一个,哈哈哈.离编程只有几个月的时间,人们才能写出疯狂的东西.
解决方法:
不带括号的PHP解析器将分析与第二个if(而不是第一个if(外部))有关的elseif语句.添加方括号告诉解析器elseif属于第一个if.
PHP与Python不同,PHP的缩进告诉解析器语句之间的关系.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。