Как грамотно организовать control structures с 50-60 условиями?

Camillo

Новичок
Как грамотно организовать control structures с 50-60 условиями?

Привет всем.

Возник такой вопросик. Утрированно опишу суть проблемы. Например, человек вводит предложение. Нажимает кнопочку субмит. Далее - это предложение с помощью функции strpos() проверяется на наличие ключевых слов (этих слов достаточно много 50-60). Если функция для какого-нить из этих ключевых слов отдаёт true, то сразу кидает на какой-нить результат. Теперь непосредственно сам вопрос. Можно такую структуру построить в лоб:

if (strpos($string, "keyword1") {
if (strpos($string, "keyword2") {
...................................................
if (strpos($string, "keyword№") {
}
else {
результат№
}
}
else {
результат2
}
}
else {
результат1
}

В принципе ничего сложного если таких ключевых слов 2-3-10... а если их больше 100? Подскажите пожалуйста как наиболее рационально организовать такое вот ветвление?

Спасибо!
 

Camillo

Новичок
Автор оригинала: Бресь Сергей
Ключевые слова должны быть в массиве. Использовать цикл.
Это хорошо, когда все ключевые слова условно разбиты на несколько групп по 20-30 слов, например. И когда для каждой группы обозначен 1 результат. Тогда кол-во переходов будет равно кол-ву массивов с группами.

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

kvf77

Red Devil
Camillo

помоему у тебя тут явная ошибка проектирования. что значит 1 результат для группы?
 

SiMM

Новичок
> А вот если для каждого ключевого слова свой результат - тогда, имхо, массив не поможет.
Так, к сведению - массивы бывают ассоциативными и многомерными.
 

Screjet

Новичок
Разбираешь предложения на слова, и в цикле их прогоняешь через ассоциативный массив.
 

Camillo

Новичок
Автор оригинала: SiMM
> А вот если для каждого ключевого слова свой результат - тогда, имхо, массив не поможет.
Так, к сведению - массивы бывают ассоциативными и многомерными.
т.е. ты хочешь сказать - сделать массив в котором сразу каждому ключевому слову был бы сопоставлен результат? хм.. грамотно... я в программировании ни бум-бум.. вы уж простите... иногда для себя программки пишу... но вот многомерные и ассоциативные массивы надо обязательно взять на вооружение. Спасибо за совет!

-~{}~ 15.09.05 12:40:

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

-~{}~ 15.09.05 12:46:

Автор оригинала: kvf77
Camillo

помоему у тебя тут явная ошибка проектирования. что значит 1 результат для группы?
Ключевые слова разбиты на группы. Например:
1ая группа
манка
греча
рис
перловка

2ая группа
золото
серебро
платина
палладий

и т.д.

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

во как я намудрил =))
 

alexhemp

Новичок
создать двумерный массив. Расположить в нем группы в порядке убывания приоритета. Искать первое вхождение.
 
Сверху