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 :: Упростить конструкцию из множественных if

 PHP.SU

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


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

> Без описания
Doxtor
Отправлено: 14 Сентября, 2012 - 12:36:04
Post Id


Новичок


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


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




if(preg_match('/word_1/', $value))
{
if(preg_match('/word_2/', $value))
{
if(preg_match('/word_n/', $value))
...

Можно ли как-то упростить такую конструкцию.
Спасибо.
 
 Top
KingStar
Отправлено: 14 Сентября, 2012 - 14:15:09
Post Id



Участник


Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011  
Откуда: Беларусь


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




if / elseif


-----
То что программа работает, не означает что она написана правильно!
 
 Top
re_nat
Отправлено: 14 Сентября, 2012 - 16:01:04
Post Id



Частый гость


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


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





судя по скобкам тут ваще preg_match() and preg_match() Хм
 
 Top
Okula
Отправлено: 14 Сентября, 2012 - 16:15:16
Post Id



Участник


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


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




Как то не разумно сделано. Я бы так сделал:
PHP:
скопировать код в буфер обмена
  1. if(preg_match('~word_([0-9]+)~', $value, $result) != 0) {
  2.     if($result[1] == '1') {
  3.         // здесь твой php код
  4.     } elseif($result[1] == '2') {
  5.         // здесь твой php код
  6.     } elseif($result[1] == '3') {
  7.         // здесь твой php код
  8.     } else {
  9.         // здесь твой php код
  10.     }
  11. }
 
 Top
Runet4ik
Отправлено: 14 Сентября, 2012 - 16:16:17
Post Id



Гость


Покинул форум
Сообщений всего: 105
Дата рег-ции: Май 2011  
Откуда: Россия


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




$arr = array('word_1', 'word_2', 'word_n');
foreach($arr as $val){
if(preg_match("#".preg_quote($val)."#", $value)) необходимые действия
}
Что типа этого....

А между многократным использованием if и if/elseif есть разница так что смотря для чего всё это надо...
 
 Top
Doxtor
Отправлено: 14 Сентября, 2012 - 17:16:52
Post Id


Новичок


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


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




Всем огромное спасибо за помощь.
Век живи, век учись.

Runet4ik пишет:
$arr = array('word_1', 'word_2', 'word_n');
foreach($arr as $val){
if(preg_match("#".preg_quote($val)."#", $value)) необходимые действия
}
Что типа этого....
.


В этом случае получается 'word_1' или 'word_2' или 'word_n', а нужно
'word_1' и 'word_2' и 'word_n'


(Добавление)
Okula пишет:
Как то не разумно сделано. Я бы так сделал:
PHP:
скопировать код в буфер обмена
  1. if(preg_match('~word_([0-9]+)~', $value, $result) != 0) {
  2.     if($result[1] == '1') {
  3.         // здесь твой php код
  4.     } elseif($result[1] == '2') {
  5.         // здесь твой php код
  6.     } elseif($result[1] == '3') {
  7.         // здесь твой php код
  8.     } else {
  9.         // здесь твой php код
  10.     }
  11. }


Слова не в прямом значении word_1, word_2, а например "жил", "был", "пёс"


(Добавление)
re_nat пишет:

судя по скобкам тут ваще preg_match() and preg_match() Хм


Ура! Заработало!

(Отредактировано автором: 14 Сентября, 2012 - 17:41:59)

 
 Top
re_nat
Отправлено: 14 Сентября, 2012 - 18:06:21
Post Id



Частый гость


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


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




Doxtor пишет:
Ура! Заработало!


Записаться что ли в битву экстрасенсов.. Радость
 
 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