$a = array ('один', 'два', 'три', 'четыре', 'пять');
$b = array ('четыре', 'пять', 'шесть', 'семь','весемь');
нужно если хотя бы одни элемент массива $a равен хотя бы одном элементу массива $b, тогда echo "совпадение найдено"; (в идеале, указать количество этих совпадений)
сам побывал:
1. преобразовать в строки и находить вхождение. (не катит)
2. пересчитывать все циклами (ваще ужас)
3. различные ARRAY_XXXXXXXX (тоже как то у меня не работают)
Заранее спасибо.
Спустя 23 минуты, 30 секунд (28.07.2009 - 09:08) sergeiss написал(а):
А что именно сам пробовал? Код какой? Тут достаточно (ежели самому делать), цикл в цикле. И всё получится.
Спустя 4 минуты, 43 секунды (28.07.2009 - 09:13) linf написал(а):
я боюсь что цикл в цикле, это будет долго, так как объемы большие (это только в примере меленькие)... (да и парочка циклов у меня уже есть... очень много вложений полуается страшный код)
как нибудь можно еще?
как нибудь можно еще?
Спустя 3 минуты, 21 секунда (28.07.2009 - 09:16) sergeiss написал(а):
Цитата (linf @ 28.07.2009 - 10:13) |
как нибудь можно еще? |
Можно еще поймать щуку и потом "по щучьему веленью" Можно также попробовать использовать array_search()
Боишься многократных "циклов в цикле"? Сделай функцию, которая будет делать это сравнение (если нету желания использовать готовые функции). Код станет красивее.
Спустя 3 минуты, 22 секунды (28.07.2009 - 09:19) Dezigo написал(а):
PHP |
<?php |
Цитата |
Array ( [1] => blue ) |
Спустя 1 минута, 38 секунд (28.07.2009 - 09:21) Michael написал(а):
Цикл пусти по одному массиву, а перебираемые значения
проверяй функцией in_array() в другом массиве до первого
совпадения
проверяй функцией in_array() в другом массиве до первого
совпадения
Спустя 4 минуты, 10 секунд (28.07.2009 - 09:25) Oyeme написал(а):
PHP |
$a = array ('один', 'два', 'три', 'четыре', 'пять','h','zlo'); |
Спустя 1 минута, 48 секунд (28.07.2009 - 09:27) linf написал(а):
array_search у меня не работал... но я попробую еще разок... (тут оже с циклом)
Ладно, покажи как сделать цикл в цикле (для этого примера)
И сразу вопрос, сколько по времени займет такая обработка, если к примеру один массив вводится через форму, а другой формируется из строки текстовой базы в которой этих строк примерно 10000...
------------------
$mass и $out - массивы
Ладно, покажи как сделать цикл в цикле (для этого примера)
И сразу вопрос, сколько по времени займет такая обработка, если к примеру один массив вводится через форму, а другой формируется из строки текстовой базы в которой этих строк примерно 10000...
------------------
$mass и $out - массивы
PHP |
for ($a = 0; $a <=count($mass); $a++) {$key = array_search("$mass[$a]", $out); echo $key;} |
выдал 4 ноля!
Спустя 24 секунды (28.07.2009 - 09:27) Sylex написал(а):
PHP |
<?php |
не знаю, насколько это производительно, но должно быть норм
Спустя 4 минуты, 29 секунд (28.07.2009 - 09:32) linf написал(а):
Вообще пишу поиск по текстовой базе, может дадите хотя бы подсказку в каком направлении нужно двигаться, или хотя бы ссылочку на примеры...
Спустя 1 минута, 44 секунды (28.07.2009 - 09:33) Sylex написал(а):
linf
от поставленной задачи идет ее решение
в чем сложности? чего боитесь? Поиском пользоваться умеем? Все найти можно...
от поставленной задачи идет ее решение
в чем сложности? чего боитесь? Поиском пользоваться умеем? Все найти можно...
Спустя 1 минута, 2 секунды (28.07.2009 - 09:35) twin написал(а):
Удивительное дело, но фореч всех победил по производительности:
PHP |
$a1 = array ('один', 'два', 'три', 'четыре', 'пять'); |
Спустя 4 минуты, 33 секунды (28.07.2009 - 09:39) Sylex написал(а):
twin
PHP |
<?php |
странно, у меня обратные результаты
Спустя 53 секунды (28.07.2009 - 09:40) linf написал(а):
Sylex Поиском пользуюсь уже с 12 ночи, открыто примерно 40 вкладок сайта http://ru.php.net...
Кстати понял проблему, тот пример с array_intersect который ты привел, работает, но в маих массивах выдает нули...
как можно массив проверить?
Кстати понял проблему, тот пример с array_intersect который ты привел, работает, но в маих массивах выдает нули...
как можно массив проверить?
Спустя 2 минуты, 14 секунд (28.07.2009 - 09:42) Sylex написал(а):
Цитата (linf @ 28.07.2009 - 12:40) |
тот пример с array_intersect который ты привел, работает, но в маих массивах выдает нули... |
какие еще нафик нули? Ты поясняйся!
Цитата (linf @ 28.07.2009 - 12:40) |
как можно массив проверить? |
что значит проверить?
Спустя 5 минут, 50 секунд (28.07.2009 - 09:48) linf написал(а):
Цитата (Sylex @ 28.07.2009 - 10:42) | ||||
какие еще нафик нули? Ты поясняйся!
что значит проверить? |
PHP |
<?PHP |
Спустя 1 минута, 48 секунд (28.07.2009 - 09:50) linf написал(а):
Хм... видимо количество табов тут и у меня не совпадают, чето весь код поразъехался =)))
Спустя 7 минут, 31 секунда (28.07.2009 - 09:57) twin написал(а):
Sylex
Цитата |
странно, у меня обратные результаты |
А ты вот так сделай
PHP |
echo sizeof($c), '<br>'; |
Спустя 6 минут, 47 секунд (28.07.2009 - 10:04) Sylex написал(а):
twin
надо же как получилось
но все равно функция грам быстрее чем перебор + in_array
надо же как получилось
но все равно функция грам быстрее чем перебор + in_array
Спустя 7 минут, 8 секунд (28.07.2009 - 10:11) Sylex написал(а):
linf
много у меня замечаний к твоему коду... я понятия не имею что у тебя там в базе хранится... никаких нулей не должно там быть
много у меня замечаний к твоему коду... я понятия не имею что у тебя там в базе хранится... никаких нулей не должно там быть
Спустя 1 минута, 56 секунд (28.07.2009 - 10:13) Sylex написал(а):
функция chop() - алиас rtrim, она не удаляет двойные пробелы
Спустя 2 минуты, 11 секунд (28.07.2009 - 10:15) linf написал(а):
Sylex
в базе слова, к примеру:
один^два^три
четыре^пять^шесть
даже если я такие вожу в строку $search, все равно выдает нули...
в базе слова, к примеру:
один^два^три
четыре^пять^шесть
даже если я такие вожу в строку $search, все равно выдает нули...
Спустя 1 минута, 17 секунд (28.07.2009 - 10:17) linf написал(а):
Цитата (Sylex @ 28.07.2009 - 11:13) |
функция chop() - алиас rtrim, она не удаляет двойные пробелы |
А что она делет?
и как тогда вообще множественные пробелы (не тока двойные), заменить на 1?
Спустя 2 минуты, 24 секунды (28.07.2009 - 10:19) Sylex написал(а):
Цитата (linf @ 28.07.2009 - 12:48) |
print_r $c; |
print_r($c);
Спустя 1 минута, 8 секунд (28.07.2009 - 10:20) Sylex написал(а):
PHP |
<?PHP |
файл 1.csv:
HTML |
вообщем^есть^шаблон^в^папке^shabs^по^нему^он лепит^дорвеи^указан^макрос^сам^этого |
результат:
HTML |
Array ( [1] => есть ) Array ( [2] => указан ) Array ( ) |
т.е. все верно работает...
Спустя 2 минуты, 13 секунд (28.07.2009 - 10:22) Sylex написал(а):
Цитата (linf @ 28.07.2009 - 13:17) |
и как тогда вообще множественные пробелы (не тока двойные), заменить на 1? |
PHP |
$s = 'проверка множеств ыва проверка работает а '; |
Спустя 44 секунды (28.07.2009 - 10:23) Sylex написал(а):
linf
и вообще поиск ты некорректно делаешь.. можно проще и эффективней, ну все равно, старайся, набирайся опыта
и вообще поиск ты некорректно делаешь.. можно проще и эффективней, ну все равно, старайся, набирайся опыта
Спустя 1 минута, 11 секунд (28.07.2009 - 10:24) linf написал(а):
все, до меня дошло что не так, порекомендуйте вообще что нибуть по разработке поиска на PHP почитать...
Спустя 48 секунд (28.07.2009 - 10:25) linf написал(а):
Цитата (Sylex @ 28.07.2009 - 11:23) |
linf и вообще поиск ты некорректно делаешь.. можно проще и эффективней, ну все равно, старайся, набирайся опыта |
ХАЧУ ПРОЩЕ И ЭФФЕКТИВНЕЕ!!!!!!!!!!!!!!!!!!!!
Спустя 7 минут, 22 секунды (28.07.2009 - 10:32) Sylex написал(а):
linf
тогда узнавай что такое базы данных и как производить в них поиск
гугла, яндекс - тебе в помощь
тогда узнавай что такое базы данных и как производить в них поиск
гугла, яндекс - тебе в помощь
Спустя 41 секунда (28.07.2009 - 10:33) Sylex написал(а):
linf
а если все же на файлах хочешь - за тебя тут писать никто не будет... только за отдельную плату
а если все же на файлах хочешь - за тебя тут писать никто не будет... только за отдельную плату
Спустя 7 минут, 23 секунды (28.07.2009 - 10:41) linf написал(а):
=((
_____________
Live in new format =)