|
|
|
| Есть созданные из б.д. массивы:
$result = mysql_query("SELECT * FROM doska ORDER BY id DESC",$db);
$myrow = mysql_fetch_array ($result);
$str2 = $myrow['text_obyavl']; // Первый массив
$str2 = strtolower($str2); // Приводим все символы к нижнему регистру
$a1 = explode(" ",$str2); // Заносим слова в массив
$str3 = $myrow['zagolovok']; // Второй массив
$str3 = strtolower($str3); // Приводим все символы к нижнему регистру
$a2 = explode(" ",$str3); // Заносим слова в массив
|
Можно ли создать массив $a который содержит все значения $a1 и $a2? | |
|
|
|
|
|
|
|
для: sega_z
(06.09.2011 в 17:57)
| | $a = array_merge($a1, $a2); | |
|
|
|
|
|
|
|
для: sl1p
(06.09.2011 в 18:28)
| | Спасибо, всё верно!!!
А можно как нибудь сделать, чтобы из массива $a выводились только уникальные значения?
for($i = 0; $i < count($a); $i++)
{
echo $a[$i];
}
|
| |
|
|
|
|
|
|
|
для: sega_z
(06.09.2011 в 19:00)
| | Для этого его можно пропустить через функцию array_unique(), которая возвращает массив уникальных элементов для текущего массива.
$a = array_unique($a);
for($i = 0; $i < count($a); $i++)
{
echo $a[$i];
}
|
| |
|
|
|
|
|
|
|
для: cheops
(06.09.2011 в 19:25)
| | Все понятно, спасибо!
А как сделать вывод оператором "echo" или "printf ()" только уникального значения переменной?
Т.е. чтобы указанные операторы не выводили одно и тоже значение два раза. | |
|
|
|
|
|
|
|
для: sega_z
(06.09.2011 в 19:47)
| | Не очень понятно о чем идет речь, эти операторы обычно принимают одно значение... вы передаете им несколько значений через запятую? | |
|
|
|
|
|
|
|
для: cheops
(06.09.2011 в 19:49)
| | Допустим в цикле do - while присваивается значения переменной $id из б.д. (значения в этом цикле могут повторятся) и выводится указанным оператором (printf ($id)).
Как сделать чтобы находясь в цикле оператор выводил одиннаковые значения только один раз? | |
|
|
|
|
|
|
|
для: sega_z
(06.09.2011 в 20:00)
| | вести параллельно массив с id. на каждой итерации проверять, есть ли в массиве этот id, если нет, то выводим и добавляем его туда | |
|
|
|
|
|
|
|
для: nikita2206
(06.09.2011 в 20:13)
| | Можно на моём примере показать вашу версию? | |
|
|
|
|
|
|
|
для: sega_z
(06.09.2011 в 20:00)
| | Тут либо данные из таблицы лучше предварительно помещать в массив, который можно превратить в уникальный, либо, что предпочтительно, добиться уникального вывода средствами SQL - собственно он для этого и проектировался. | |
|
|
|
|
|
|
|
для: cheops
(06.09.2011 в 20:14)
| | Немного не понятно. Давайте я приведу вам конкретный код:
Это своего рода поиск схожих слов в тексте и заголовке объявления
$str1 = "норковая шуба";
$str1 = mb_strtolower($str1); // Приводим все символы к нижнему регистру
$a1 = explode(" ",$str1); // Заносим слова в массив
$result = mysql_query("SELECT * FROM doska ORDER BY id DESC",$db);
$myrow = mysql_fetch_array ($result);
do
{
$str2 = $myrow['zagolovok'];
$str2 = strtolower($str2); // Приводим все символы к нижнему регистру
$a2 = explode(" ",$str2); // Заносим слова в массив
$str3 = $myrow['text_obyavl'];
$str3 = strtolower($str3); // Приводим все символы к нижнему регистру
$a3 = explode(" ",$str3); // Заносим слова в массив
$a = array_merge($a2, $a3);
for($i = 0; $i < count($a); $i++)
{
$var1 = similar_text($a1[0], $a[$i], &$tmp1);
if ($tmp1 >= 75)
{
for($i = 0; $i < count($a); $i++)
{
$var2 = similar_text($a1[1], $a[$i], &$tmp2);
if ($tmp2 >= 75)
{
$zagolovok = $myrow['zagolovok'];
$id = $myrow['id'];
echo "№ $id: $zagolovok $tmp1, $tmp2<br><br>"; // схожесть строк в процентах
}
}
}
}
}
while ($myrow = mysql_fetch_array ($result));
|
Проблема в том, что так выводятся одинаковые номера объявлений несколько раз | |
|
|
|
|
|
|
|
для: sega_z
(06.09.2011 в 20:21)
| | Что никто не поможет??? | |
|
|
|
|
|
|
|
для: sega_z
(07.09.2011 в 19:58)
| | вот вы сейчас выдернули чеку из гранаты и вертите её на пальце
помочь в чем? завалить сервер? :)
для поиска по базе есть штатные средства
___
для удаления дублей есть DISTINCT
да и слова в нижнем регистре можно сразу из базы дергать.. но это вас не спасет) | |
|
|
|
|
|
|
|
для: Valick
(07.09.2011 в 21:08)
| | Да, действительно нагрузка на сервер сильная.
А можете подсказать, как сделать поиск по базе похожих слов без использования оператора LIKE?
Потому, что при поиске по слову "Продам" строки со словом "Продаю" уже не выводятся оператором LIKE и TEXTREA | |
|
|
|
|
|
|
|
для: sega_z
(07.09.2011 в 21:57)
| | ну во-первых по слову Продам не нужно искать, это должен быть соответствующий раздел)
просто посмотрите информацию на тему полнотекстового поиска
___
лично я бы собирал информацию о поисковых запросах и создал бы базу таких слов и всякого рода вариаций этих слов, ставил в соответствие значимую часть слова и по ней бы делал полнотекстовый поиск, хотя это только размышления, вам нужен совет от человека с большей практикой чем у меня | |
|
|
|
|
|
|
|
для: Valick
(07.09.2011 в 22:45)
| | Ну все равно, спасибо вам!!! | |
|
|
|