Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Использование условия с одним вариантом

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Perun
Отправлено: 21 Апреля, 2019 - 11:27:49
Post Id


Гость


Покинул форум
Сообщений всего: 116
Дата рег-ции: Дек. 2016  


Помог: 0 раз(а)




Например:

Если существует переменная, выводим ее, если нет, то ничего выводить на экран не нужно.

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $res=mysqli_query($link,"SELECT * FROM `comments`") or exit('error: '.mysqli_error($link));
  3. $entries_amount = mysqli_num_rows($res);
  4. echo 'Comments('.@$entries_amount.'):';
  5.         if($entries_amount){
  6.                 while($row=mysqli_fetch_assoc($res)){
  7.                         echo '<div class="comment"> -'.$row['name'].' '.$row['date'].'<br>'.$row['text'].'</div>';
  8.                 }
  9.         }
  10.         else{
  11.                 echo 'No entries yet';
  12.         }?>



Корректно ли вообще использование собаки? Как обойтись без нее? И как это можно записывать через тернарный оператор?

И насколько корректн/некорректно использование определения в условии(строка 6)? Редактор кода PHP Storm ругается, говорит, что это плохая практика.

(Отредактировано автором: 21 Апреля, 2019 - 11:33:35)

 
 Top
Строитель Модератор
Отправлено: 21 Апреля, 2019 - 12:05:18
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)




Perun, конечно лучше не использовать @. Вместо этого оператора можно взять языковую конструкцию ! empty().
PHP:
скопировать код в буфер обмена
  1. if (! empty($entries_amount)) {
  2.     echo 'Comments(' . $entries_amount . '):';
  3.     // остальной код
  4. }
 
 Top
LIME
Отправлено: 21 Апреля, 2019 - 12:09:28
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Строитель согласен
Но не так уверенно и однозначно
Есть мнение что сабаки упрощают чтение кода
Но я могу сильно этому возразить
Про то например что инфраструктура сильно часто не читается
Короче не однозначно
(Добавление)
Perun не слушай меня
 
 Top
Perun
Отправлено: 21 Апреля, 2019 - 16:29:50
Post Id


Гость


Покинул форум
Сообщений всего: 116
Дата рег-ции: Дек. 2016  


Помог: 0 раз(а)




С тернарным оператором я так понял он в таком случае неуместен?
Ну и с этим
Perun пишет:
насколько корректн/некорректно использование определения в условии(строка 6) и вообще такие записи в фале разметки, а не в php? Редактор кода PHP Storm ругается, говорит, что это плохая практика.

Вопрос открыт..
 
 Top
Строитель Модератор
Отправлено: 21 Апреля, 2019 - 22:50:05
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)




Perun пишет:
С тернарным оператором я так понял он в таком случае неуместен?
Не уместен, т.к. он подходит для одной строки, а у вас от этого условия зависит ещё и выполнение цикла.

На счёт 6-й строки:
У меня PhpStorm на неё не ругается.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB