Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: if... else...
 
 автор: sirop   (23.05.2007 в 15:19)   письмо автору
 
 

Встречаю в скриптах такой оборот:

<?php
$title 
== 'Error' 'bgcolor=#ffffff' 'bgcolor=red';
?>


Хотелось бы узнать плюсы и минусы такого приёма в отличии от:

<?php
if ($title == 'Error') 'bgcolor=#ffffff' ;
else 'bgcolor=red';
?>

   
 
 автор: Unkind   (23.05.2007 в 15:24)   письмо автору
 
   для: sirop   (23.05.2007 в 15:19)
 

Дело только в читабельности кода. В данном случае условие, а также iftrue и iffalse не занимают много места, поэтому, на мой взгляд, все нормально.

   
 
 автор: Trianon   (23.05.2007 в 16:28)   письмо автору
 
   для: Unkind   (23.05.2007 в 15:24)
 

Дело не только в читабельности.
левое выражение в операторе присваивания не приходится записывать дважды.
А значит первый вариант позволяет избежать ошибок, когда эти выражения окажутся ошибочно написанными по-разному.

К сожалению.... к глубочайшему моему сожалению, условное выражение в PHP реализовано с нарушениями ассоциативности, и пользоваться им нужно очень осторожно. не брезгуя скобками.

   
 
 автор: Trianon   (23.05.2007 в 15:29)   письмо автору
 
   для: sirop   (23.05.2007 в 15:19)
 

>Встречаю в скриптах такой оборот:
>

><?php
>$title == 'Error' 'bgcolor=#ffffff' 'bgcolor=red';
>
?>
>


такой код ни на что не воздействует.

>
>Хотелось бы узнать плюсы и минусы такого приёма в отличии от:
>
><?php
>if ($title == 'Error') 'bgcolor=#ffffff' ;
> else 'bgcolor=red';
>?>

такой , впрочем, тоже.

   
 
 автор: coloboc66   (23.05.2007 в 15:36)   письмо автору
 
   для: Trianon   (23.05.2007 в 15:29)
 

to Trianon: Имеется ввиду, что не указан объект, которому присваивается цвет?

   
 
 автор: Unkind   (23.05.2007 в 15:46)   письмо автору
 
   для: coloboc66   (23.05.2007 в 15:36)
 

Имеется ввиду, что не указан объект, которому присваивается цвет?
Имеется ввиду, что нет никакого вывода или оператора присвоения. Бессмысленное выражение.
В Perl в таких случаях выдается замечание.

   
 
 автор: cheops   (23.05.2007 в 15:41)   письмо автору
 
   для: sirop   (23.05.2007 в 15:19)
 

Первый вариант более короткий, уменьшается на одной строке, однако менее читабелен по сравнению со второй строкой. Такая конструкция используется, когда выражение с X ? Y : Z получается не очень громоздкое и длинное.

   
 
 автор: sirop   (23.05.2007 в 15:51)   письмо автору
 
   для: cheops   (23.05.2007 в 15:41)
 

Unkind:
>Имеется ввиду, что нет никакого вывода или оператора присвоения
Это я ошибся при написании примера

По поводу такой конструкции кода - всё понятно. Всем большое спасибо за пояснения!

   
 
 автор: bronenos   (23.05.2007 в 20:15)   письмо автору
 
   для: sirop   (23.05.2007 в 15:51)
 

вообще да, такой код ниче делать не будет
вот так будет нагляднее
<?php
$std 
'black';

$color = ($std=='black') ? '#000000' '#ffffff';

if (
$std == 'black')
  
$color '#000000';
else
  
$color '#ffffff';
?>

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования