1

私はサイト全体のphpコードを改善しようとしていますが、これには永遠に時間がかかります.

以下の 6 行目の小さなコードでは、

$selected_ date_ month このコードは、より大きな関数のコードの一部にすぎないため、$selected_ date_ monthが渡されて適切に設定されることもありますが、正しく設定されないこともあります。そうでない場合、 $selected_date_monthの NOTICE が設定されないようにするにはどうすればよいですか?

//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

冗長な3行目 $i = 0;の代わりに、次のように書くことができます。

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

それが最速の解決策になるでしょう。

変数が設定され、反復ごとに何度も設定されるかどうかを制御する必要はありません。

于 2009-09-04T19:01:34.963 に答える
0

変数を使用する前に検証することをお勧めします。

$selected_date_month = (int)@$selected_date_month;
于 2009-09-04T14:02:41.767 に答える
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
  • 設定されていることを確認します ( issetを使用)。
  • 何らかの値で初期化します。
于 2009-09-04T13:56:16.423 に答える
0

isset()を使用して、変数が設定されているかどうかを確認できます。そうでない場合は、ある種のデフォルト値に設定できます。

于 2009-09-04T13:56:42.697 に答える