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


Автор: Wolf1994 28.7.2006, 18:14
Возможно ли воспользоваться функцией поиска по 2 (n)- мерному массиву?
То есть, есть массив: 

Код

$t [0] [0]="1";
$t [1] [0]="2";
$t [2] [0]="3";


Как осуществить в нём поиск?

Код

print array_search ("2", $t [...] [0]);


 smile

Добавлено @ 18:19 
Да, забыл добавить. Поиск по последнему параметру, то есть для [всех] [0] найти значение в первой размерности (во [всех]). 

Автор: szz 28.7.2006, 18:20
свою написать.
вроде того (не тестил):
Код

function array_search_2d($what, $array){
    foreach($array as $k1 => $v1){
       foreach($v1 as $k2 => $v2){
            if($what==$v2)
                  return array($k1, $k2)
      }
   }
   return false;
}


Добавлено @ 18:22 
Цитата

Поиск по последнему параметру, то есть для [всех] [0] найти значение в первой размерности (во [всех]).  

   Чиво?..  smile  

Автор: Wolf1994 28.7.2006, 20:01
Значит готового метода нет  smile 

Цитата

Чиво?..  

Я имел ввиду поиск в одном измерении... То есть, чтобы найти во втором измерении, можно воспользоваться тем же array_search: array_search ("2", $t [1]) - и для моего примера получить "0". То есть поиск: $t [первая размерность=x] [искать во второй] - возможен, а поиск: $t [искать в первой] [вторая размерность=x]... Как я понял - нет smile

Добавлено @ 20:04 
Вот если бы можно было поменять размерности местами  smile  

Автор: Mal Hack 28.7.2006, 20:44
Готового решения нет. Надо релизовывать самому.
Да и форами, а то и while тут лучше было бы.

Код

$i = 0;
while( $t[$i][$fixed] != "0" && $i < sizeof( $t ) )
{ $i++ }

print $t[i][$fixed] . " - найденный элемент";
 

Автор: Wolf1994 28.7.2006, 22:18
Ясно. Это то, что я хотел узнать... А то думал, что слишком мудрю, в то время как есть готовое решение...

szz, Mal Hack, спасибо.
 

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