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


Автор: OverClocker 11.5.2006, 17:10
$array - массив
$str - строка

Нужно найти тот элемент массива, который равен строке:

Код

for($i=0;$i<count($array);$i++)
{
   if ($array[$i]==$str)
   {
        .... //действия
        break;
   }
}


Есть ли замена такой конструкции? Более короткая и быстрая. 

Автор: Ripper 11.5.2006, 20:33
Цитата

mixed array_search (mixed элемент, array массив, bool strict) 

Сканит массив на наличие заданного элемента и, если такой есть, возвращает его ключ; иначе возвращает FALSE. 

$arr=array( 
"a"=>"alpha", 
"b"=>"beta", 
"c"=>"centavra" 
"d"=>"gamma" 
); 

$ourkey=array_search("alpha",$arr); 

if($ourkey) 
echo($ourkey); 



Сам проверил, вроде если должна находить возвращает единицу 
Код

<?
$arr=array("abc","cab","bvfg");
$v=array_search("cab",$arr);
echo $v;
?>

Источник - http://web-support.ru/web-tech/php_64.shtml  

Автор: -=Ustas=- 12.5.2006, 09:44
Если искомое значение не нужно для использования, а нужна проверка только на вхождение, то по-моему будет более разумно использовать
Код

in_array();
 

Автор: Drache 13.5.2006, 08:50
to -=Ustas=-:

почему более разумно? 

Автор: -=Ustas=- 13.5.2006, 11:16
Drache, 
Цитата(-=Ustas=- @  12.5.2006,  09:44 Найти цитируемый пост)
Если искомое значение не нужно для использования, а нужна проверка только на вхождение

 

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