number_format и прерывание цикла

Статус
В этой теме нельзя размещать новые ответы.

tan_81

Постоялец
Регистрация
18 Окт 2006
Сообщения
129
Реакции
30
Что-то совсем никак не могу въехать. Переписываю самопис с php4.2 под php5.3

Есть цикл
PHP:
while (....) {
....
$aTmp['id_service'] = odbc_result($result,13);
$aTmp['id_land']= odbc_result($result,14);
....
$aTmp['cost']= NumberFormat(odbc_result($result,16));
....
$aTmp['rom']= NumberFormat(odbc_result($result,30));
}

В нем используется функция, которая в 4 выглядела так:
PHP:
function NumberFormat($num_frmt)
{
$num_frmt = number_format($num_frmt, 0, ',', ' ');
return $num_frmt;
}

Заметил странную вещь - если в odbc_result($result,16) попадается ноль, то данная итерация цикла доходит до конца (NumberFormat(odbc_result($result,30))) и цикл на этом завершается. Если закоментить number_format, то все нормально. Ошибок никаких нет.
Никаких комментов по этому поводу не нашел. Может кто-то сможет объяснить поведение цикла (решений не надо, все уже написано, сам факт интересен, просто на отлов этого бреда час ушел)?
 
Последнее редактирование модератором:
По функции Для просмотра ссылки Войди или Зарегистрируйся, я никаких задокументированных изменений не вижу (до PHP 5.4:(
Для просмотра ссылки Войди или Зарегистрируйся

Точно именно эта ф-ция вызывает ошибку?
Может ошибка на этапе получения данных по odbc ?
 
Точно именно эта ф-ция вызывает ошибку?
Может ошибка на этапе получения данных по odbc ?

Да в том то все и дело, что ошибки как таковой нигде не отображается. Такое чувство, что каким то образом курсор odbc_fetch_row($result) (который в while) ставится после этого на конец. Надо кстати проверить как-нибудь будет этот вариант, но понятней от этого не становится.

Для просмотра ссылки Войди или Зарегистрируйся
Returns the string contents of the field, FALSE on error, NULL for NULL data, or TRUE for binary data.
А где взаимосвязь? 0 то он мне исправно отдает. Скажу более того такое-же поведение было и на NumberFormat(0);
Хитрость в чем то другом
 
Заметил странную вещь - если в odbc_result($result,16) попадается ноль, то данная итерация цикла доходит до конца (NumberFormat(odbc_result($result,30))) и цикл на этом завершается.
А что в скобках в while(...)? Могу предположить, что result изменяется...

Если заменить NumberFormat на такое:
Код:
function NumberFormat($num_frmt)
{
return  number_format($num_frmt, 0, ',', ' ');
}
 
Скорее всего возник Exception, оберни проблемную функцию в try catch
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху