我怎样才能摆脱这个PHP通知?

时间:2009-09-04 13:53:41

标签: php notice

我正在努力改进我的网站范围的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>";

7 个答案:

答案 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)

  • 检查是否已设置(使用isset)。
  • 用一些值初始化它。

答案 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;

这将是最快解决方案。

变量将被设置,您无需在每次迭代中一次又一次地控制它。