2009-09-04 2 views
1

Я пытаюсь улучшить мою домашнюю ссылку на PHP, которая собирается навсегда, потому что я хочу иметь отчет об ошибках, чтобы показать все и не иметь уведомлений.Как я могу избавиться от этого уведомления PHP?

В этом немного ниже кода на линии 6,

$ selected_ date_ месяц Этот код только часть кода из более крупной функции, так что иногда $ selected_ date_ месяц передается в и тогда он правильно установлен, но иногда это не так. Когда это не так, как я мог бы предотвратить УВЕДОМЛЕНИЕ для $ 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>"; 

ответ

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

В этом случае сначала проверить, если $ selected_date_month установлен, а затем сравнить его с $ я + 1

0
  • Проверить для него быть установлен (с использованием isset).
  • Инициализируйте его с некоторой ценностью.
0

Чтобы проверить, установлен ли параметр var, вы можете использовать isset(). Если это не так, вы можете установить его на какое-то значение по умолчанию.

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); 

Скрытие ошибки, вероятно, не самый лучший вариант. Самый чистый подход, вероятно, заключался бы в том, чтобы установить переменную в каждом случае, вы можете установить ее равной нулю, если не выбрана дата.

0

Попробуйте функцию Исеть():

$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>"; 
0

Лучше проверить переменную перед ее использованием.

$selected_date_month = (int)@$selected_date_month; 
+0

не так ли плохо использовать @ хотя? – JasonDavis

+1

Когда вы точно знаете его поведение - все в порядке. Вы можете использовать 'isset' в этом случае, но это намного дольше и менее читаемо imho. – pingw33n

+0

Можете ли вы сказать мне, что называется этим методом (int), я его никогда не использовал, называется ли это типом? – JasonDavis

0

Вместо третьей линии$i = 0;, что избыточными, вы могли бы написать:

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

Было бы решение быстро.

Эта переменная будет установлена, и вам не нужно будет контролировать, будет ли она задаваться снова и снова на каждой итерации.

Смежные вопросы