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

Форум PHP

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

 

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

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

тема: Упростить код условия
 
 автор: tima2010   (10.02.2011 в 19:15)   письмо автору
 
 

Добрый день подскажите пожалуйста как можно укротить этот код:

<?php
$id_serv
$_SERVER['REQUEST_URI'];
if (
$id_serv == "/news.php") {
echo 
'<a href="news.php" id="text_menu_top"><strong>Новости</strong></a>';
} else {
echo 
'<a href="news.php" id="text_menu_top">Новости</a>';

?>


Спасибо!

  Ответить  
 
 автор: neadekvat   (10.02.2011 в 19:32)   письмо автору
 
   для: tima2010   (10.02.2011 в 19:15)
 

<?php
$news_text 
= ($_SERVER['SCRIPT_NAME'] == '/news.php') ? '<strong>Новости</strong>'
                                                      
'Новости';
echo 
'<a href="news.php" id="text_menu_top">'$news_text .'</a>';

SCRIPT_NAME вместо REQUEST_URI, т.к. скорее всего будут передаваться ж какие-то параметры старнице.

  Ответить  
 
 автор: DJ Paltus   (10.02.2011 в 19:37)   письмо автору
 
   для: tima2010   (10.02.2011 в 19:15)
 

Добрый вечер!
Можно использовать тринарный оператор сравнения и увеличить повторяемость кода:
<?$id_serv$_SERVER['REQUEST_URI'];
$text "Нововости";
$block = (($a == "/news.php") ? "<strong>".$text."<strong>" $text);
echo 
"<a href='news.php' id='text_menu_top'>".$block."</a>";

  Ответить  
 
 автор: neadekvat   (10.02.2011 в 19:38)   письмо автору
 
   для: DJ Paltus   (10.02.2011 в 19:37)
 

> тринарный оператор
*шепотом* тернарный.

  Ответить  
 
 автор: DJ Paltus   (10.02.2011 в 19:40)   письмо автору
 
   для: neadekvat   (10.02.2011 в 19:38)
 

Бугогашечки. А я его все тринарным называю... Темнота. )

  Ответить  
 
 автор: DJ Paltus   (10.02.2011 в 19:44)   письмо автору
 
   для: DJ Paltus   (10.02.2011 в 19:37)
 

опечаточка
<? 
$block 
= (($id_serv == "/news.php") ? "<strong>".$text."<strong>" $text); 

  Ответить  
 
 автор: Косорылый   (10.02.2011 в 22:30)   письмо автору
 
   для: DJ Paltus   (10.02.2011 в 19:44)
 

4 скобки ->-лишние + одинарные кавычки ( ведь зачем напрягать интерпретатор , где явно нет переменных )?

  Ответить  
 
 автор: DJ Paltus   (11.02.2011 в 02:08)   письмо автору
 
   для: Косорылый   (10.02.2011 в 22:30)
 

Можно поподробнее? Я не понял.

  Ответить  
 
 автор: neadekvat   (11.02.2011 в 09:54)   письмо автору
 
   для: DJ Paltus   (11.02.2011 в 02:08)
 

Если строка записана в двойных кавычка ("), то интерпритатор ищет в ней переменные, спесимволы..
А если в одинарных (') - то ничего не ищет, а оперирует с ней как с чем-то цельным, неизменемым, т.е. внутри не капается.
И Косорылый указывает на то, что двойные кавычки лучше использовать, только если на то есть необходимость.
В данном случаи ее не было. К тому же, вы изменили исходный html-код автора. Лично мне не нравится, как внешне выглядят атрибуты тегов, обернутые в одинарные кавычки. Но конкретно это - уже мои тараканы, конечно :)

  Ответить  
 
 автор: Trianon   (11.02.2011 в 10:19)   письмо автору
 
   для: neadekvat   (11.02.2011 в 09:54)
 

Говоря откровенно, овсем не копаться в строке интерпретатор не может.
Просто в одном случае конечный автомат ожидает трех символов (апостроф, обратный слэш, конец потока) а в другом - пяти (кавычка, обратный слэш, знак доллара, конец потока) .
Разница, как видим, даже не в два раза. Фигурную скобку намеренно не считаю, потому что без доллара непосредственно рядом она смысла не несет, а значит отдельной ветви не тркебует.

  Ответить  
 
 автор: neadekvat   (11.02.2011 в 11:02)   письмо автору
 
   для: Trianon   (11.02.2011 в 10:19)
 

Логично.
Правда, я забыл добавить, что все это экономия на спичках.
Но вот для читабельности кода моя рекомендация ставить двойные кавычки только при необходимости (по моему, конечно, мнению) полезна. Ибо, если интерпритатору глубоко пофиг, сколько он строк уже отпахал за сегодня, то глазки то и мозг имеют свойство уставать =\

  Ответить  
 
 автор: DJ Paltus   (11.02.2011 в 15:19)   письмо автору
 
   для: neadekvat   (11.02.2011 в 09:54)
 

Век живи, век учись!
Я и исходный код-то поменял, потому что всегда так пишу: если html голый, то двойные кавычки, если внутри php, то одинарные. Акцент, так сказать.
А разницу теперь понял, спасибо.

  Ответить  
 
 автор: Косорылый   (11.02.2011 в 10:56)   письмо автору
 
   для: tima2010   (10.02.2011 в 19:15)
 

Я бы сделал так:
<?
$Url
='/news.php';
$Анкор ='Новости'
$Тег ='<strong>'.$Анкор.'</strong>'
$Анкор $_SERVER['REQUEST_URI']!== $Url $Анкор $Тег ;
?>
<a href="news.php" id="text_menu_top"><?php echo $Анкор ?></a>

Максимально вынести Html из скрипта

  Ответить  
Rambler's Top100
вверх

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