Новости | FAQ | Авторы | Документация | В действии | Библиотека |
Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
serglif 13.10.2004 10:57
Вот несколько выкушенный из контекста, кусок кода, который должен искать в задаваемых столбцах таблицы обработанные варианты запроса (обработанные - это когда пользователь спросил "молоток", а программа ищет "молоток", "Молоток", "МОЛОТОК". Понятно, что если используется LIKE в СУБД, то эта обработка излишняя, но допустим, что в примере такой возможности нет и таблица грузится из файла)#Следующие три конструкции добавлены для некоторого контекста $table[client] $question['завод'] $items[^table::load[${table}.cfg]] #Задаются поля, в которых необходимо искать $searchfields[ $.client[ $.0[name] $.1[ur_name] $.2[phones] ] ] #Обрабатывается исходный запрос и создается хэш новых $question[^question.trim[]] $character[^question.left(1)] $character[^character.upper[]] $word[^question.mid(1)] $word[^word.lower[]] $questions[ $.1[^question.upper[]] $.2[^question.lower[]] $.3[${character}${word}] ] #Вот собственно конструкция, которая не хочет парситься! $items[^items.select( ^searchfields.$table.foreach[key;value]{ ^questions.foreach[nkey;nvalue]{ (^items.[$value].pos[$nvalue]>-1) }[||] }[||] )]Результат исполнения последней конструкции: