修复遗留代码而不破坏所有内容

时间:2014-04-17 17:56:39

标签: php legacy-code

我有一些像这样的代码:

somefunc($row['some_key']);

有时,$ row可能没有'some_key'记录Undefined index警告。

  
    

如何在不改变程序当前行为的情况下修复此警告?

  

我知道我需要将问题解决到源代码,但这是遗留代码库T_T

我的尝试

if(!isset($row['some_key'])){
    somefunc(null);
}
else{
    somefunc($row['some_key']);
}

这是等价的吗?

3 个答案:

答案 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块。