【发布时间】:2016-02-19 17:43:37
【问题描述】:
假设我想检查几个不同的参数,然后回退到默认值,有没有办法做到这一点,而不会写出丑陋和冗长的 isset()?
例如在 JS 中我们可以这样做:
var someVariable = otherVar || anotherVar || 'fallback here';
PHP 中的等价物是这样的:
$someVariable = (isset($otherVar) ? $otherVar : (isset($anotherVar) ? $anotherVar : 'fallback here'));
这显然是一团糟,难以阅读。
对于单个后备,存在很多解决方案,即:
$someVariable = $otherVar ?: 'fallback here';
但这并不能帮助我在检查中要求不止一个。
鉴于我只对值是设置还是真值感兴趣(即,我很高兴 1 被接受为使用的值,并且 0/false/null 被跳过并等待下一个要使用的链中的参数),避免未定义索引警告的最佳方法是什么?
实际上,我会在大多数 情况下对数组执行此操作,但不是全部,而且它们可能是不同的数组。我可能想首先使用 $_POST,然后在不同的键下检查 $_GET,然后回退到例如默认字符串。
【问题讨论】:
-
我曾经做过error_reporting(0);警告消失..
-
我使用 error_reporting 来检查其他问题,所以我不想关闭它。
-
我也不想压制 E_NOTICE,因为如果可能的话,我想从根本上解决问题,而不是仅仅忽略它的报告。
标签: php