SexBlogs.Name
С нами с 13.10.03
Сообщения: 3159
Рейтинг: 962
|
Добавлено: 22/07/06 в 12:47 |
есть 6 массивов забитых урлами
нужно проверить вхождения $arraySmall в $arrayBig
причем массивы с одинаковыми номерами на вхождения проверяться недолжны..
Самое простое - сравнить все по очереди - но кода получается прорва
да и не эстетично
Код: |
$arraySmall1;
$arraySmall2;
$arraySmall3;
$arrayBig1;
$arrayBig2;
$arrayBig3;
for ($i = 0; $i < sizeof($arraySmall1); $i++)
{
for ($index = 0; $index < sizeof($arrayBig2); $index++)
{
$var1 = parse_url($arraySmall1[$i]);
$var2 = parse_url($arrayBig2[$index]);
if (!$var1[host] == $var2[host])
{
array_push($gotValues1, $arraySmall1[$i]);
}
}
} |
пробывал организовать все в 2 массива $arraySmall[] и $arrayBig[]
Тогда сильно увеличивается вложенность - путаешься моментально...
|
|
Submit your blog to the sex blogs list. PR=3 Quickly approve! 10 posts min. Ping every 6 hour!
|
0
|
|
|
С нами с 19.11.03
Сообщения: 3973
Рейтинг: 2362
|
Добавлено: 22/07/06 в 15:25 |
Код: |
<?php
$array_a = array();
$array_b = array();
foreach ($array_a as $val)
{
if(array_search($val, $array_b) !== false)
{
/**
* Do something
*/
}
}
?>
|
и так попарно сравнить все остальные.
|
|
|
|
С нами с 06.03.03
Сообщения: 1650
Рейтинг: 1096
|
Добавлено: 22/07/06 в 17:47 |
гораздо быстрее будет составить один раз список всех доменов по которым пойдет проверка, чем каждый раз парсить одни и те же урлы. Ну а затем обходиться обычным in_array().
|
|
|
|
php наше всё :)
С нами с 26.07.04
Сообщения: 814
Рейтинг: 447
|
Добавлено: 22/07/06 в 19:42 |
Согласен с Xreload.
Юзай array_search везде, где это можно. Это намного быстрее.
+
вместо
Код: | for ($i = 0; $i < sizeof($arraySmall1); $i++) |
можешь написать
Код: | foreach ($arraySmall1 as $AS1Element)
{
} |
Так эстетичнее :) Хотя и не быстрее. + вместо sizeof для масивов юзай count. :) Но это тоже не убыстряет.
Array_search должен спасти ситуацию, хотя что тебе с этими масивами надо сделать (со всеми) так и не понял. В примере твоем используется 3 из 6 масивов.
+ конструкция
Код: | if (!$var1[host] == $var2[host]) |
логически не верна.
Может ты так хотел все таки:
Код: | if (!($var1[host] == $var2[host])) |
или так:
Код: | if ($var1[host] != $var2[host]) |
P.S. Если взять 2 урла. http://google.com и http://www.google.com , то после parse_url параметр хост в полученном масиве будет разный. С www для 2го варианта и без оного для 1го. Если ты логически считаешь эти урлы (не)одинаковыми - то надо учитывать, что такая проверка на (не)равенство параметра хост - провалится.
|
|
|
|
SexBlogs.Name
С нами с 13.10.03
Сообщения: 3159
Рейтинг: 962
|
Добавлено: 23/07/06 в 16:25 |
Dantist писал: | Согласен с Xreload.
Юзай array_search везде, где это можно. Это намного быстрее.
|
он ищет поэлементно - а элементы все уникальные - это может быть 2 урла на одном домене а это уже неканает
Dantist писал: | Array_search должен спасти ситуацию, хотя что тебе с этими масивами надо сделать (со всеми) так и не понял. В примере твоем используется 3 из 6 масивов. |
Если элемент из массива small присутствует в массиве big - он удаляется
Dantist писал: | Код: | if (!$var1[host] == $var2[host]) |
логически не верна.
Может ты так хотел все таки:
Код: | if (!($var1[host] == $var2[host])) |
или так:
Код: | if ($var1[host] != $var2[host]) | |
тут действительно ошибка - набивал опечатался - сделал последний вариант
Dantist писал: |
P.S. Если взять 2 урла. http://google.com и http://www.google.com , то после parse_url параметр хост в полученном масиве будет разный. С www для 2го варианта и без оного для 1го. Если ты логически считаешь эти урлы (не)одинаковыми - то надо учитывать, что такая проверка на (не)равенство параметра хост - провалится. |
А я вначале из всех урлов удаляю www. а уже потом сравниваю.
И еще массивы уже отфильтрованы так что разных субдоменов на одном домене быть не может
Можно конечно взять урлы в массиве - обрезать их все до хоста, а потом сравнивать - так и искать проще и сравнивать, но я хочу сохранить полные урлы
|
|
Submit your blog to the sex blogs list. PR=3 Quickly approve! 10 posts min. Ping every 6 hour!
|
0
|
|
|
SexBlogs.Name
С нами с 13.10.03
Сообщения: 3159
Рейтинг: 962
|
Добавлено: 23/07/06 в 16:27 |
Сделал точно так как предложил xreload - простые решения рулят
Всем биг сэнкс с меня максимальный рэйтинг
|
|
Submit your blog to the sex blogs list. PR=3 Quickly approve! 10 posts min. Ping every 6 hour!
|
0
|
|
|
Текстовая реклама в форме ответа Заголовок и до четырех строчек текста Длина текста до 350 символов Купить рекламу в этом месте! |