На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Serafim, fatalist
  
    > Отличить NULL и 0 , php
      У меня делается запрос LEFT JOIN по некому условию. Если оно не удовлетворяет, то в результате будет NULL. Однако иногда, результат запроса может быть 0 т.е. JOIN успешный, но в результате 0 (число 0).
      И потом мне нужно отличить 0 от NULL.
      Просто If ( массив['поле'] ) не получится, т.к. if в этом случае будет False когда ячейка массива и 0 и NULL.
        Узнать в РНР, является-ли null
        Цитата

        is_null
        (PHP 4 >= 4.0.4, PHP 5)

        is_null -- Finds whether a variable is NULL
        Description
        bool is_null ( mixed var)


        Returns TRUE if var is null, FALSE otherwise.

        See the NULL type when a variable is considered to be NULL and when not.
          Ежели память меня не подводит, то есть в РНР4 такие операторы, как === и !===, то есть эквивалентно, и не эквивалентно. При их использовании NULL != 0
            Astaroth,
            Цитата
            !===
            эт ты где такое надыбал :blink: :blink: :blink: :blink:
              Astaroth,
              может так !==
                А что скажете про isset ?

                Ещё вопрос
                Есть код

                ExpandedWrap disabled
                  переменная = y
                  if (переменная = функция) s = x; else s = y;


                функция возвращает 0. Понятно, что сработает правая ветка условия и s будет равно y.
                Но что будет с переменной. Она останется равной y или будет равна 0 ?
                  Цитата
                  Song, 1.09.04, 21:51
                  функция возвращает 0. Понятно, что сработает правая ветка условия и s будет равно y.
                  Но что будет с переменной. Она останется равной y или будет равна 0 ?

                  Переменной сначала присвоится результат функции (т.е. 0)
                    Тогда получается что строчка переменная = y бессмысленна?
                      Цитата
                      isset() will return FALSE if testing a variable that has been set to NULL. Also note that a NULL byte ("\0") is not equivalent to the PHP NULL constant.
                        Наверно правильней будет так сделать

                        if (переменная == "") {тогда она пустая} else {содержит значение, может быть 0 }
                          Цитата
                          SergeS, 1.09.04, 19:53
                          Astaroth,
                          может так !==

                          А может и так... ;) Я РНР в руки ужо лет сто в руки не брал, так что не помню точно, но способ отличать NULL от 0 есть точно.
                            Ну вообщем я вставил в запрос IFNULL(поле,0) и делов..
                            Кстати, SergeS, ответь мне всё-таки на вопрос в #8
                              Song,
                              если ты про MySQL , и там про чтенме строк - то ета строка является FALSE если mysql_fetch... нечего читать :)
                                Цитата
                                Song, 2.09.04, 09:04
                                Тогда получается что строчка переменная = y бессмысленна?

                                Получается, что да. Начальная инициализация переменной...
                                  Я почему спросил отдельно, потому как SergeS в свой new написал следующее:
                                  ExpandedWrap disabled
                                     
                                        $ftime = $ibforums->forum_read[ $fid ];
                                            
                                     
                                        if ($ftime = $std->my_get_forumread($fid ))
                                        {
                                            $rtime = $ftime;
                                        }
                                        else
                                        {
                                            $rtime = 0;
                                        }
                                    Song,
                                    ааа - ты про ето :) -
                                    1. ой строки не помню :) ( не ты ли добавил ? )
                                    2. если такая запись есть - то приписываем её значение если нет то пишеи 0
                                      Цитата
                                      SergeS, 3.09.04, 22:26
                                      1. ой строки не помню ( не ты ли добавил ? )

                                      ничего не прибавлял, всё твое.
                                      Цитата
                                      SergeS, 3.09.04, 22:26
                                      2. если такая запись есть - то приписываем её значение если нет то пишеи 0

                                      ок, согласен, но зачем два присвоения на ftime ?
                                        Song,
                                        дак я точно не использовал эрреи :) - такчто ктото потом прикрутил
                                        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                        0 пользователей:


                                        Рейтинг@Mail.ru
                                        [ Script execution time: 0,0428 ]   [ 15 queries used ]   [ Generated: 27.04.24, 19:39 GMT ]