|
|
|
|
|
для: zeta777
(06.08.2009 в 13:07)
| | >Да, мне тоже так кажется, что in_array не самое лучшее. То есть вы советуете все-таки разобраться с FIND_IN_SET?
Безусловно. Вне связи с темой. Чем большим количеством инструментов владеешь, тем свободнее в подходах себя чувствуешь.
А FIND_IN_SET (несмотря на легкую провокацию к применению не по назначению) инструмент всё ж полезный. На мой взгляд.
а in_array($val, $list) я бы сравнил с isset($list[$key])
>>Если бы Вы изначально спросили, как оценивать принадлежность ключа некоторому множеству средствами php? ответ был бы совершенно другой.
>>
>Да, надо научиться корректно выражать, что мне нужно :)
Безусловно. Вне связи с темой. :) | |
|
|
|
|
|
|
|
для: Trianon
(05.08.2009 в 22:27)
| | Да, мне тоже так кажется, что in_array не самое лучшее. То есть вы советуете все-таки разобраться с FIND_IN_SET?
>Если бы Вы изначально спросили, как оценивать принадлежность ключа некоторому множеству средствами php? ответ был бы совершенно другой.
>
Да, надо научиться корректно выражать, что мне нужно :) | |
|
|
|
|
|
|
|
для: zeta777
(05.08.2009 в 16:14)
| | Если бы Вы изначально спросили, как оценивать принадлежность ключа некоторому множеству средствами php? ответ был бы совершенно другой.
Между прочим, in_array - далеко не лучший выход в этом плане. | |
|
|
|
|
|
|
|
для: Trianon
(04.08.2009 в 17:47)
| | Спасибо. Но сделала, не мудрствуя лукаво, с помощью in_array | |
|
|
|
|
|
|
|
для: zeta777
(04.08.2009 в 16:37)
| | Ссылочка:http://dev.mysql.com/doc/refman/5.1/en/string-functions.html#function_find-in-set
SELECT IF(FIND_IN_SET(id, $spisok) > 0 , 'found','not found')
|
| |
|
|
|
|
автор: ,,,,,, (04.08.2009 в 17:02) |
|
|
для: zeta777
(04.08.2009 в 16:37)
| | CASE value WHEN [compare_value] THEN result [WHEN [compare_value] THEN result ...] [ELSE result] END
CASE WHEN [condition] THEN result [WHEN [condition] THEN result ...] [ELSE result] END
The first version returns the result where value=compare_value. The second version returns the result for the first condition that is true. If there was no matching result value, the result after ELSE is returned, or NULL if there is no ELSE part.
mysql> SELECT CASE 1 WHEN 1 THEN 'one'
-> WHEN 2 THEN 'two' ELSE 'more' END;
-> 'one'
mysql> SELECT CASE WHEN 1>0 THEN 'true' ELSE 'false' END;
-> 'true'
mysql> SELECT CASE BINARY 'B'
-> WHEN 'a' THEN 1 WHEN 'b' THEN 2 END;
-> NULL
|
The default return type of a CASE expression is the compatible aggregated type of all return values, but also depends on the context in which it is used. If used in a string context, the result is returned as a string. If used in a numeric context, then the result is returned as a decimal, real, or integer value.
Note
The syntax of the CASE expression shown here differs slightly from that of the SQL CASE statement described in Section 12.8.6.2, “CASE Statement”, for use inside stored programs. The CASE statement cannot have an ELSE NULL clause, and it is terminated with END CASE instead of END.
IF(expr1,expr2,expr3)
If expr1 is TRUE (expr1 <> 0 and expr1 <> NULL) then IF() returns expr2; otherwise it returns expr3. IF() returns a numeric or string value, depending on the context in which it is used.
mysql> SELECT IF(1>2,2,3);
-> 3
mysql> SELECT IF(1<2,'yes','no');
-> 'yes'
mysql> SELECT IF(STRCMP('test','test1'),'no','yes');
-> 'no'
|
If only one of expr2 or expr3 is explicitly NULL, the result type of the IF() function is the type of the non-NULL expression.
The default return type of IF() (which may matter when it is stored into a temporary table) is calculated as follows.
Expression Return Value
expr2 or expr3 returns a string string
expr2 or expr3 returns a floating-point value floating-point
expr2 or expr3 returns an integer integer
If expr2 and expr3 are both strings, the result is case sensitive if either string is case sensitive.
Note
There is also an IF statement, which differs from the IF() function described here. See Section 12.8.6.1, “IF Statement”. | |
|
|
|
|
|
|
|
для: Trianon
(04.08.2009 в 16:27)
| | к сожалению, не знаю, как ее применить в if - только в where... Вы не могли бы или ссылочки или готовый синтаксис? | |
|
|
|
|
|
|
|
для: zeta777
(04.08.2009 в 16:23)
| | наверное применить в условии функцию FIND_IN_SET() | |
|
|
|
|
|
|
|
для: Trianon
(04.08.2009 в 16:17)
| | Не поняла вопрос :(
у меня есть заданный вручную (не выборкой из базы данных, а просто перечисленный по цифрам, не меняющийся) список категорий, определенный в конфигурационном файле как переменная $spisok
В условиях WHERУ я им пользуюсь легко и непри нужденно :)
WHERE category IN ('" . $config['spisok'] . "')";
а как этим воспользоваться в условии IF? | |
|
|
|
|
|
|
|
для: zeta777
(04.08.2009 в 16:17)
| | При чем тут конфиг? В переменной что лежит?
var_dump($spisok); | |
|
|
|
|