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

Тема в разделе "PHP", создана пользователем tan_81, 12 апр 2013.

Статус темы:
Закрыта.
Модераторы: latteo
  1. tan_81

    tan_81 Постоялец

    Регистр.:
    18 окт 2006
    Сообщения:
    128
    Симпатии:
    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_frmt0','' ');
    return 
    $num_frmt;
    }
    Заметил странную вещь - если в odbc_result($result,16) попадается ноль, то данная итерация цикла доходит до конца (NumberFormat(odbc_result($result,30))) и цикл на этом завершается. Если закоментить number_format, то все нормально. Ошибок никаких нет.
    Никаких комментов по этому поводу не нашел. Может кто-то сможет объяснить поведение цикла (решений не надо, все уже написано, сам факт интересен, просто на отлов этого бреда час ушел)?
     
    Последнее редактирование модератором: 18 июн 2014
  2. denik

    denik Постоялец

    Регистр.:
    1 июл 2011
    Сообщения:
    79
    Симпатии:
    43
    По функции number-format, я никаких задокументированных изменений не вижу (до PHP 5.4:(
    http://php.net/manual/en/function.number-format.php

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

    stealthdebuger Механик

    Administrator
    Регистр.:
    25 авг 2008
    Сообщения:
    624
    Симпатии:
    1.379
  4. tan_81

    tan_81 Постоялец

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

    А где взаимосвязь? 0 то он мне исправно отдает. Скажу более того такое-же поведение было и на NumberFormat(0);
    Хитрость в чем то другом
     
  5. esche

    esche

    Регистр.:
    9 авг 2009
    Сообщения:
    360
    Симпатии:
    243
    А что в скобках в while(...)? Могу предположить, что result изменяется...

    Если заменить NumberFormat на такое:
    Код:
    function NumberFormat($num_frmt)
    {
    return  number_format($num_frmt, 0, ',', ' ');
    }
    
     
  6. fdgfdgfh

    fdgfdgfh Создатель

    Регистр.:
    30 май 2014
    Сообщения:
    27
    Симпатии:
    5
    Скорее всего возник Exception, оберни проблемную функцию в try catch
     
Статус темы:
Закрыта.