【发布时间】:2018-07-09 12:01:00
【问题描述】:
我的代码如下。根据我对不同网站和 php 文档的理解,empty() 是一种检查密钥是否存在的语言结构,就像isset() 一样(只是它也会在变量或密钥存在的情况下进行松散的“假”比较...
37 $origin =
38 !empty($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] :
39 !empty($_SERVER['HTTP_ORIGIN']) ? $_SERVER['HTTP_ORIGIN'] :
40 !empty($_SERVER['ORIGIN']) ? $_SERVER['ORIGIN'] :
41 "Unknown Origin";
错误:
未定义的索引:somePHPFile.php:40 中的 ORIGIN
更新: 我通过将 else-parts 括在括号中来修复它。当我发现确切的问题(关联性或其他......)时,我将再次更新此答案。
$origin =
(!empty($_SERVER['HTTP_REFERER'])) ? $_SERVER['HTTP_REFERER'] :
((!empty($_SERVER['HTTP_ORIGIN'])) ? $_SERVER['HTTP_ORIGIN'] :
(!empty($_SERVER['ORIGIN']) ? $_SERVER['ORIGIN'] :
"Unbekannte Herkunft"));
【问题讨论】:
-
使用这样的嵌套三元运算应该是非法的。很难阅读和调试。
-
在三元组中添加一些括号,以便正确处理。当你不使用括号时,事情会变得很奇怪。
-
有趣。这是什么php版本?请提供一个最小但有效的代码示例供我们测试。谢谢。
-
我将尝试在星期四之前提供一个工作的最小示例,以及 php 版本 - 如果没有找到真正的原因(可能是关联性),那么更早。
-
请注意。现在,这对您来说可能看起来不错,但是当您在几周/几个月甚至几年后返回并需要阅读/更新该代码(或者更糟糕的是,其他人需要这样做)时,您会后悔的它。文件中的行很便宜。您应该尝试使代码更具可读性。另外,如果你这样做了,这可能不是一个问题。
标签: php