我正在努力改进我的网站范围的PHP代码,这将永远需要,因为我希望能够有错误报告显示所有并且没有通知。
在第6行的下面这段代码中,
$ selected_ date_ month 此代码只是来自较大函数的代码的一部分,因此有时会传入 $ selected_ date_ month ,然后正确设置它,但有时却不是。如果不是,我怎么能阻止 $ selected_ date_ month 的通知未被设置?
//month dropdown box
$arr_month = array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
$date_combo .= ' <select name="' . $pre . 'month" class="' .$style. '"><option value="">Month</option>';
$i = 0;
for ($i = 0; $i <= 11; $i++) {
$date_combo .= " <option ";
if ($i + 1 == $selected_date_month) {
$date_combo .= " selected ";
}
$date_combo .= " value='" . str_pad($i + 1, 2, "0", STR_PAD_LEFT) . "'>$arr_month[$i]</option>";
}
$date_combo .= "</select>";
答案 0 :(得分:8)
if (isset($selected_date_month) && $i + 1 == $selected_date_month) {
$date_combo .= " selected ";
}
首先你检查是否设置了$ selected_date_month,然后将它与$ i + 1进行比较
答案 1 :(得分:1)
您可以检查变量是否已设置:
if (isset($selected_date_month) && $selected_date_month == $i + 1)
或抑制错误:
if ($i + 1 == @$selected_date_month)
或关闭通知:
ini_set('error_reporting', E_ALL & ~ E_NOTICE);
隐藏错误可能不是最好的选择。最干净的方法可能是在每种情况下设置变量,如果没有选择日期,可以将其设置为null。
答案 2 :(得分:0)
答案 3 :(得分:0)
您可以使用isset()检查var是否已设置。如果不是,您可以将其设置为某种默认值。
答案 4 :(得分:0)
尝试使用isset()函数:
$date_combo .= " <option ";
if (isset($selected_date_month) && $i + 1 == $selected_date_month) {
$date_combo .= " selected ";
}
$date_combo .= " value='" . str_pad($i + 1, 2, "0", STR_PAD_LEFT) . "'>$arr_month[$i]</option>";
答案 5 :(得分:0)
在使用之前更好地验证变量。
$selected_date_month = (int)@$selected_date_month;
答案 6 :(得分:0)
而不是第三行 $i = 0;
,多余,您可以写下:
if (!isset($selected_date_month)) $selected_date_month = NULL;
这将是最快解决方案。
变量将被设置,您无需在每次迭代中一次又一次地控制它。