我有一些像这样的代码:
somefunc($row['some_key']);
有时,$ row可能没有'some_key'记录Undefined index
警告。
如何在不改变程序当前行为的情况下修复此警告?
我知道我需要将问题解决到源代码,但这是遗留代码库T_T
if(!isset($row['some_key'])){
somefunc(null);
}
else{
somefunc($row['some_key']);
}
这是等价的吗?
答案 0 :(得分:1)
当然,它是等价的,但你可以更简洁(如果你有兴趣)使用三元运算符(http://www.php.net/manual/en/language.operators.comparison.php你必须滚动一点,不幸的是,它们没有任何锚点)...
somefunc( (isset($row['some_key'])) ? $row['some_key'] : null );
答案 1 :(得分:1)
你也可以这样做:
somefunc( isset($row['some_key']) ? $row['some_key'] : null)
答案 2 :(得分:0)
如果您不想更改整个程序的结构,我建议在访问任何抛出未定义索引/偏移量错误的变量之前添加一个简单的isset()
检查。
if (isset($row['some_key'])) {
somefunc($row['some_key']);
}
这样,当且仅当some_key
索引存在时才会调用该函数。您可以使用三元表达式进一步缩短它,但它不会非常易读,所以我建议改用if-else
块。