Проблемка с PHP

540
.
Суть проблемы такова, пишу вот это
/**
  Определим доступность предмета по уровню
*/
 if($user_wow['level'] < $row['level'])
 {
   $error = 'Уровень персонажа слишком мал для покупки предмета .';

 }
 
 
 
 /**
  Финансы
*/
 else if($user_wow['gold'] < $row['cost'])
 {
   $error = 'Недостаточно золота для покупки предмета .';
 }
 
 
 
 /**
  Проверим на оружие
*/
 else if($user_wow['sword'] > 0)
 {
   $error = 'Для покупки предмета , необходимо выбросить старое оружие .';
 }

  if ($error) 
{
  echo '<div class="err">'.$error.'</div>';
}

Но если все окей и для покупки все есть в том месте где должна выводится ошибка (например Для покупки предмета , необходимо выбросить старое оружие) пишит вот это Notice: Undefined variable: error in W:\home\localhost\test\world\sword_info.php on line 96
как исправить это?((
.
А создать переменную за тебя кто-то должен? Ну или еще как вариант через isset проверить ее существование. А вообще я сам всегда стараюсь не пользоваться магией приведения типов и для каждого типа делать соответствующие проверки.
Например в данном случае я бы сделал так:
if (isset($error)) {
}

или в самом начале создал переменную $error = '' и затем уже в условии проверил, не является ли она пустой:
if (!empty($error)) {
}

А еще лучше сделать массив $error = [];
и затем использовать не elseif, разбить на отдельные условия.
При этом думаю не нужно объяснять, как заполнять массив.
И уже в конце:
if (!empty($error)) { 
    echo implode("\r\n", $error);
}
.
reaper, спс с меня + Тему в офф
.
Пока тему не закрыли еще вопрос
if ($user['level'] >= 4) 
{
  $act = ($_GET['act']);
switch ($act){
default:
/////Дальше код админки


Почемуто матерится на эту строку $act = ($_GET['act']);
.
Ей 25
Megabit, а зачем скобочки после равно? Ты же потом подставляешь акт тоже в скобочки и выходит 2 пары скобочек.
.
ValekS, скобки убрал, но ничего не изменилось....
.
# Megabit (22.02.2014 / 14:12)
ValekS, скобки убрал, но ничего не изменилось....
Скопируй сюда ошибку
.
Megabit, зачем тебе это
$act = ($_GET['act']);
вообще? этож бред..
.
adust, я в этих переменных вообще не фурычу.. глянь файл там в 34 строке ошибку бьет, копеечку если что накину
Прикрепленные файлы:
.
(\/)____o_O____(\/)
Megabit, $act = isset($_GET['act']) ? $_GET['act'] : '';
Всего: 12