Реклама на сайте Advertise with us

Можно ли оптимизировать данную схему? (php)

Расширенный поиск по форуму
 
Новая тема Новая тема   
Автор
Поиск в теме:

SexBlogs.Name

С нами с 13.10.03
Сообщения: 3159
Рейтинг: 962

Ссылка на сообщениеДобавлено: 22/07/06 в 12:47       Ответить с цитатойцитата 

есть 6 массивов забитых урлами
нужно проверить вхождения $arraySmall в $arrayBig
причем массивы с одинаковыми номерами на вхождения проверяться недолжны..
Самое простое - сравнить все по очереди - но кода получается прорва
да и не эстетично icon_smile.gif
Код:

$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
          */
      }         
   }
?>


и так попарно сравнить все остальные.

5
 



С нами с 06.03.03
Сообщения: 1650
Рейтинг: 1096

Ссылка на сообщениеДобавлено: 22/07/06 в 17:47       Ответить с цитатойцитата 

гораздо быстрее будет составить один раз список всех доменов по которым пойдет проверка, чем каждый раз парсить одни и те же урлы. Ну а затем обходиться обычным in_array().

5
 

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го. Если ты логически считаешь эти урлы (не)одинаковыми - то надо учитывать, что такая проверка на (не)равенство параметра хост - провалится.

5
 

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])

тут действительно ошибка - набивал опечатался - сделал последний вариант icon_smile.gif
Dantist писал:

P.S. Если взять 2 урла. http://google.com и http://www.google.com , то после parse_url параметр хост в полученном масиве будет разный. С www для 2го варианта и без оного для 1го. Если ты логически считаешь эти урлы (не)одинаковыми - то надо учитывать, что такая проверка на (не)равенство параметра хост - провалится.

А я вначале из всех урлов удаляю www. а уже потом сравниваю. icon_smile.gif
И еще массивы уже отфильтрованы так что разных субдоменов на одном домене быть не может
Можно конечно взять урлы в массиве - обрезать их все до хоста, а потом сравнивать - так и искать проще и сравнивать, но я хочу сохранить полные урлы

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 - простые решения рулят icon_smile.gif
Всем биг сэнкс с меня максимальный рэйтинг icon_smile.gif

Submit your blog to the sex blogs list. PR=3 Quickly approve! 10 posts min. Ping every 6 hour!

0
 
Новая тема Новая тема   

Текстовая реклама в форме ответа
Заголовок и до четырех строчек текста
Длина текста до 350 символов
Купить рекламу в этом месте!


Перейти:  



Спонсор раздела Стань спонсором этого раздела!

Реклама на сайте Advertise with us

Опросы

Рецепт новогоднего блюда 2022



Обсудите на форуме обсудить (11)
все опросы »