如何避免“未定义的索引”错误?
如何避免“未定义的索引”错误?
这个问题已经有了答案:
我正在处理之前开发人员所写的一些代码。我对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()
检查每个项。我需要稍微重新排列一下并删除所有连接,因为它现在是这样的。还有其他简单的方法吗,还是我被卡住了?
admin 更改状态以发布 2023年5月21日
你可以使用isset()函数来进行拼接而不会丢失内容:
//snip $str = 'something' . ( isset($output['alternate_title']) ? $output['alternate_title'] : '' ) . ( isset($output['access_info']) ? $output['access_info'] : '' ) . //etc.
你也可以编写一个函数来返回一个已设置的字符串 - 这可能不是非常高效:
function getIfSet(& $var) { if (isset($var)) { return $var; } return null; } $str = getIfSet($output['alternate_title']) . getIfSet($output['access_info']) //etc
你不会得到任何通知,因为这个变量是通过引用传递的。