доброе время суток. сразу к проблеме. есть такой вот кусок кода. PHP: echo "<pre>"; print_r($_POST); echo "</pre>"; // Добавление всех ошибок в массив $error = array(); foreach($all as $key => $value){ if ($value > '0'){ $error [] = $my->err_to_str($value); } } echo "<pre>"; print_r($_POST); echo "</pre>"; выводит он следующее: PHP: [skype] => 34636 в первом случае и: PHP: [skype] => 0 во втором. [skype] - одно из значений массива $_POST. если убрать массив 'Добавление всех ошибок в массив' то все нормально - значение не теряется. в чем может быть проблема?
вот листинг err_to_str(): PHP: function err_to_str($num){ // Фатальные ошибки $err[1]="Ошибка управления или попытка взлома системы. Администратору отправлено сообщение!"; $err[2]="Ошибка авторизации."; $err[3]="Выберите страну и город"; $err[4]="Проверьте заполненные данные"; // модификация кода - нулевая длина $err[5]="Проверьте заполненные данные"; // модификация кода - длина больше чем заявленно $err[6]="Произошла ошибка при отправке письма. Пароль не изменен. Попробуйте заново"; $err[7]="Длина предложенной модели, марки не может быть больше 30"; // Ошибки работы с SQL $err[10]="Не удалось соединиться с БД"; $err[11]="Ошибка выполнения SQL-запроса"; $err[12]="Ошибка активации нового пароля"; $err[12]="Ошибка sql-запроса при отправке почты"; // Ошибки добавления при регистрации $err[20]="В числовые поля вводите только числа"; $err[21]="Логин не должен превышать 20 символов"; $err[22]="Длина пароля не меньше 6 символов"; $err[23]="Длина пароля не больше 20 символов"; $err[24]="Email не может превышать 30 символов"; $err[26]="Номер Scype не может превышать 50 символов"; $err[27]="Номер icq не может превышать 9 цифр"; $err[28]="Номер icq должен состоять только из цифр"; $err[29]="Указанный E-mail имеет недопустимый формат"; $err[31]="Пароль не может быть пустым полем"; $err[32]="Логин не может быть пустым полем"; $err[33]="Email не может быть пустым полем"; $err[36]="Указанный Вами логин уже занят"; $err[37]="На этот Email уже зарегистрировано"; $err[38]="Длина логина не меньше 5 символов"; // телефон $err[25]="Номер телефона не может превышать 11 цифр"; $err[30]="Номер телефона должен состоять только из цифр"; $err[34]="Номер телефона не может быть пустым полем"; $err[35]="Номер телефона должен состоять из 11 цифр"; // Ошибки при добавлении нового объявления $err[51]="Неправильный формат года выпуска"; $err[52]="Выберите один из предложенных вариантов руля"; $err[53]="Цена не может быть пустым полем"; $err[54]="Цена не может превышать 99999999"; $err[55]="Цена не может быть меньше 1000"; $err[56]="Пробег указан больше 999999"; $err[57]="Объем двигателя не может быть больше 99999"; $err[58]="Мощность двигателя не может быть больше 999"; $err[59]="Длина поля дополнительной информации не может быть больше 2500 символов"; $err[60]="Длина поля место осмотра не может быть больше 50 символов"; $err[61]="Выберите марку и/или модель"; $err[62]="Год выпуска не может быть пустым полем"; $err[63]="Неверно заполненно время для звонка"; $err[64]="Неккоректное изображение"; // Ошибки для web-сервера $err[101]="Ошибка выполнения SQL-запроса"; // Отправка ошибки администратору // if($this->DEBUG_LEVEL >= $num) $this->mail_err($err[$num]); // Возврат текста ошибки return($err[$num]); }
if ($value > '0') : если ($value > srting) ' ' and " " - это строки ! условие сравнения значения со строкой
тут баг епт. вы что такие все? сравнение и со строкой и с цифрой не проходит. причем пост - я и сам не пойму каким боком идет влияние на массив пост - если работа идет совсем с другим массивом. я такое еще не встречал - но тут реальный баг. спасибо всем за помощь.
посмотри в какой момент у тебя изменяется значение переменной PHP: echo "<pre>"; print_r($_POST); echo "</pre>"; // Добавление всех ошибок в массив $error = array(); foreach($all as $key => $value){ echo $_POST['skype'].' key='."$key<br>"; if ($value > '0'){ $error [] = $my->err_to_str($value); } } echo "<pre>"; print_r($_POST); echo "</pre>";