• Как сделать склонение числительных на php?

    @ynblpb_spb
    дятел php
    function RusEnding($n, $n1, $n2, $n5) {
    		if($n >= 11 and $n <= 19) return $n5;
    		$n = $n % 10;
    		if($n == 1) return $n1;
    		if($n >= 2 and $n <= 4) return $n2;
    		return $n5;
    	}
    echo RusEnding(40, "комментарий", "комментария", "комментариев");
    Ответ написан
    Комментировать
  • Правильная проверка на пустоту переменной?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Читая ответы, хочется плакать.

    В кои-то веки нашелся автор, который осилил корректно сформулировать свою проблему: в дополнение к стандартной проверке РНР, ему надо отбрасывать и нули тоже. Казалось бы - прочти и сделай по заказанному.

    Но нет. Один герой все бубнит про "это исходит от Вашей задачи" (при том что задача описана!) и дальше пишет бессмысленный код. Второй, по своей стародавней привычке, просто с умным видом пишет бессмыслицу. С третьего взятки гладки - типичное похапешное создание, пишет код не приходя в сознание.

    И при этом никто (включая автора) почему-то не догадался тупо перечислить условия задачи:
    !($var || $var === 0 || $var === 0.0 ||$var === '0')) ...

    Не говоря уже о том, что подумав, можно сообразить, что автора интересует длина строки. И написать код, который корректно, но не столь императивно следует всем условиям задачи:
    function is_empty(&$var)
    {
        return !($var || (is_scalar($var) && strlen($var)));
    }

    Самое печальное, что писать это всё - пустая трата времени.
    Серая похапешнаая масса так и останется серой массой, не понимающей языка, на котором она пишет, но всегда готовой дать совет ближнему.
    Ответ написан
    5 комментариев
  • Правильная проверка на пустоту переменной?

    KorsaR-ZN
    @KorsaR-ZN
    Начну с различия между isset и empty.

    isset - проверяет на существование переменной или индекса в массиве, т.е она будет ВСЕГДА true, если значение отлично от NULL, именно от константы null, т.е '', 0, "\0" и т.д, будет считаться существующей переменой, false будет только при присвоение ей null или unset($var), во всех остальных true

    empty - проверят именно на пустоту переменной, т.е возвращает true если переменная является пустой и false в противоположном случаи.

    В PHP пустотой считаются следующие значения:
    • ""
    • 0
    • 0.0
    • "0"
    • null
    • false
    • array() (пустой массив)
    • $var; (переменная объявлена, но не имеет значения)


    Что касается проверки на пустоту и как ее правильно делать, то это исходит от Вашей задачи, и что должно для Вас является пустотой, но в большинстве случаем подойдет такая проверка:
    if(isset($var) && $var !== '')  {
    // $var не null и не  ''.
    }

    Еще больше поможет разобраться в сравнение типов, это таблица сравнение типов PHP
    Ответ написан