1

我正在尝试在整个站点范围内改进我的 php 代码,这将需要永远,因为我希望能够有错误报告以显示所有内容并且没有通知。

在下面第 6 行的这段代码中,

$selected_ date_month 这段代码只是一个更大函数的一部分代码,所以有时$selected_ date_month被传入,然后它被正确设置,但有时它不是。如果不是,我将如何防止未设置$selected_ date_ 月份的通知?

//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>";
4

7 回答 7

8
if (isset($selected_date_month) && $i + 1 == $selected_date_month) {
                $date_combo .= " selected ";
        }

通过这种方式,首先检查是否设置了 $selected_date_month,然后将其与 $i+1 进行比较

于 2009-09-04T13:57:18.780 回答
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。

于 2009-09-04T13:57:22.243 回答
0
  • 检查它是否被设置(使用isset)。
  • 用一些值初始化它。
于 2009-09-04T13:56:16.423 回答
0

您可以使用isset()检查是否设置了 var。如果不是,您可以将其设置为某种默认值。

于 2009-09-04T13:56:42.697 回答
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>";
于 2009-09-04T13:58:23.303 回答
0

最好在使用变量之前对其进行验证。

$selected_date_month = (int)@$selected_date_month;
于 2009-09-04T14:02:41.767 回答
0

而不是第三行 $i = 0;,这是多余的,你可以写:

if (!isset($selected_date_month)) $selected_date_month = NULL;

这将是最快的解决方案。

该变量将被设置,您不必控制它是否在每次迭代中一次又一次地设置。

于 2009-09-04T19:01:34.963 回答