PHP-if语句的奇怪行为:始终执行else块
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了PHP-if语句的奇怪行为:始终执行else块,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1352字,纯文字阅读大概需要2分钟。
内容图文
![PHP-if语句的奇怪行为:始终执行else块](/upload/InfoBanner/zyjiaocheng/681/cc0ab9dd31ed484ea71885125156527c.jpg)
人民,我对这是我还是我的计算机运行缓慢感到怀疑.
我下面的代码片段:
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的缩进告诉解析器语句之间的关系.
内容总结
以上是互联网集市为您收集整理的PHP-if语句的奇怪行为:始终执行else块全部内容,希望文章能够帮你解决PHP-if语句的奇怪行为:始终执行else块所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。