Наверное самые основы...

SimpleTak

Новичок
Наверное самые основы...

Как работает вот это? :
$messages = preg_replace('~::(smile|mad|wink|mrgreen)::~','<img src="$1.gif">',$messages);

т.е. функция preg_replace мне хорошо знакома.

меня интересует: (smile|mad|wink|mrgreen)
почему значения, разделённые вертикальной чертой становятся элементами массива?

В общем, где об этом можно почитать? (т.к. не могу составить верный запрос к поисковику, т.к. не знаю что это)
 

SimpleTak

Новичок
white phoenix -СПСИБО!

Вопрос другой, но в общем-то из этой темы...

переменная X может принимать 2 значения: cat и dog.

нужно проверить эту переменную с помощью if
1.Это можно сделать так:
PHP:
if(x=='cat'){
... ;
}
else {
... ;
}
2. можно тоже самое, но без else
3. можно через switch, но если значений всего два - это нерационально.

А есть ли ещё какой-нибудь способ?
 

white phoenix

Новичок
PHP:
if ($x == 'cat') {}
elseif ($x == 'dog') {}
else {}
Можно и через switch, принципиальной разницы нет. Есть конечно извраты разные, но они все основаны на операторах сравнения.
 

white phoenix

Новичок
Ламерок прыщавы
> Если конечно только 2 значения
PHP:
$x = 4;
$r = $x == 1?'one':($x == 2?'two':($x == 3?'three':($x == 4?'four':'five')));
echo $r;
// four
Invizz
А проще уже наверно некуда.
 

SiMM

Новичок
> А проще уже наверно некуда.
Проще - воспользоваться массивом.
 

white phoenix

Новичок
SiMM
В этом примере с текстом - да, но как быть когда есть переменная и в зависимости от её значения нужно выполнить код? Ведь только много if или switch...
 

SiMM

Новичок
> но как быть когда есть переменная и в зависимости от её значения нужно выполнить код?
Вообще-то это тема уже другого топика.
PHP:
isset($arr[$idx]) ? $arr[$idx]() : die('bad');
Это не панацея. А просто иллюстрация возможности :)
 
Сверху