停止来自数组中未定义索引的通知

时间:2013-08-11 23:44:56

标签: php arrays

每当数组索引未定义时,PHP都会返回“通知”。

如何关闭这些通知?或者甚至更好,正确地为它们编码?

示例:

$job_db_ready = array(
    "email" => $this->profile['email'],
    "company" => $job['company']['name'],
    "position" => $job['title'],
    "industry" => $job['company']['industry'],
    "start_date_month" => $job['startDate']['month'],
    "start_date_year" => $job['startDate']['year'],
    "end_date_month" => $job['endDate']['month'], // Sometimes endDate undefined
    "end_date_year" => $job['endDate']['year'],  // Sometimes endDate undefined
    "is_current" => $job['isCurrent']
);

此数组将返回

Severity: Notice
Message:  Undefined index: endDate

3 个答案:

答案 0 :(得分:2)

转换通知是一种不好的做法,因为它们可以提醒您可能出现的错误。相反,检查它们是否已定义,以及它们是否未分配默认值(包括null或空字符串):

"end_date_month" => (isset($job['endDate']['month']) ? $job['endDate']['month'] : ''), 
"end_date_year"  => (isset($job['endDate']['year'])  ? ($job['endDate']['year'] : ''), 

答案 1 :(得分:1)

1)更好的编码样式:在将变量分配给数组中的键之前,检查是否先使用isset定义了变量。喜欢这个

isset($job['endDate']['month']) // Do something about it

2)转错:在做一些奇怪的事情之前在你的脚本中使用它

error_reporting(0);
建议

1不是

答案 2 :(得分:0)

将以下内容放在PHP脚本的顶部:

error_reporting( 0 );

有关详细信息,请参阅PHP文档中的error_reporting