【发布时间】:2010-11-14 19:08:28
【问题描述】:
我正在处理一些由以前的开发人员完成的代码。我对 PHP 很陌生,所以我想知道这个问题是否有任何众所周知的模式或解决方案。
基本上,原作者在尝试使用它们之前不会检查任何数组索引。我知道我可以使用isset() 在使用之前检查每一个,但现在有数百行出现这些错误。在我放一些音乐并开始用头撞键盘之前,我想确保没有一些很好的快捷方式来处理这个问题。这是我正在查看的典型代码部分:
/* snip */
"text" => $link . $top_pick_marker . $output['author'] . " " . " " .
$output['new_icon'] . $output['rec_labels'] . " "
. $output['admin_link']
. $output['alternate_title']
. $output['access_info']
. $output['description']
. $output['url']
. $output['subject_terms']
. $output['form_subdivisions']
. $output['dates_of_coverage']
. $output['update_frequency']
. $output['place_terms'],
/* snip */
我知道我可以在这里为每个项目使用isset()。我将不得不重新安排一些事情并像现在一样删除所有连接。有没有其他简单的方法可以做到这一点,还是我只是坚持下去?
【问题讨论】:
-
+1 - 这实际上是一个很好的问题。在 PHP 的“旧时代”,不会抛出这些 E_NOTICE 错误,并且引用未初始化的数组索引非常普遍。显然这是一个坏习惯,但使用 PHP 的松散类型很容易做到这一点。 E_NOTICES 现在是帮助收紧代码的好工具。但是,我发现在涉及数组的所有检查中必须调用
isset()或empty()非常单调乏味。 -
@$output['author'] 绕过检查并使用数据,如果未设置,则使用 null。