Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Поиск по массиву


Автор: sos 21.11.2005, 20:51
Пацаны,есть массив строк.Надо написать ф-цию на PHP для поиска строки(важна скорость выполнения)
1.ф-ции array_search есть разница упорядочен ли массив?
2.Если нет то что быстрее:
а.использовать array_search или
б.упорядочнить массив и написать ф-цию бинарного поиска
(время упорядочения массива не учитывать!)

Автор: sergejzr 21.11.2005, 21:03
Если строки абсолютно одинаковые, то быстрее всего так:
Код

//"Упорядочивание" массива
$massiv_strok['stroka1']=1;
$massiv_strok['stroka2']=1;
$massiv_strok['stroka3']=1;
$massiv_strok['stroka4']=1;

//Поиск строки
if($massiv[$stroka]==1)
print"Stroka est!"
else
print "stroki net!"


Автор: Bangladesh 21.11.2005, 21:32
действительно! smile

Автор: sos 21.11.2005, 22:09
Мне надо следущее:

дан:
Код

$mas_strok[]={
                         "str1|name1",
                         "str3|name3",
                         "str4|name4",
                         "str5|name5"}


Вводят $str и надо, если есть нати соотв. ему $name...

Автор: sergejzr 21.11.2005, 22:15
Ну тогда:

Код

$mas_strok[]={
                         "str1|name1",
                         "str3|name3",
                         "str4|name4",
                         "str5|name5"
};

//"Упорядочивание" массива
$massiv_strok=array();
foreach($mas_strok as stroka)
{
  $arr=stroka.split('|');
  $massiv_strok[$arr[0]]=$arr[1];
}

//Поиск строки
if(isset($massiv[$stroka]))
print"Stroka = ".$massiv[$stroka];
else
print "stroki net!"

Автор: sos 23.11.2005, 01:02
sergej.z Спасибо, все получилось! smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)