2012-06-27 5 views
0

Можно создать дубликат:
How to search by key=>value in a multidimensional array in PHP
PHP search for Key in multidimensional arrayPhp Получить ключ массива, основанный в строке

Как можно искать через значения массива и получить ключ?

Пример: поиск идентификатора 1 = 0 ключ или поиск имени Frank = ключ 1

Array 
(
    [0] => Array 
    (
     [id] => 1 
     [name] => Bob 
     [url] => http://www.bob.com.br 
    ) 

[1] => Array 
    (
     [id] => 2 
     [name] => Frank 
     [url] => http://www.frank.com.br 
    ) 
) 

Thks. Адриано

+0

Там [много примеров] (http://stackoverflow.com/search?q=%5Bphp%5D+search+multidimensional+array), чтобы выбрать из –

+0

TKS Майкл .. (поиск PHP для ключа в многомерном массиве) сообщение разрешило мою проблему ... – adrianogf

ответ

1

Использование array_search

foreach($array as $value) { 
    $result = array_search('Frank', $value); 
    if($result !== false) break; 
} 
echo $result 
0

Если вы не знаете глубины, вы можете сделать что-то вроде следующего, который использует использование RecursiveIteratorIterator и RecursiveArrayIterator:

<?php 
/******************************* 
* array_multi_search 
* 
* @array array to be searched 
* @input search string 
* 
* @return array(s) that match 
******************************/ 
function array_multi_search($array, $input){ 
    $iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($array)); 

    foreach($iterator as $id => $sub){ 
     $subArray = $iterator->getSubIterator(); 

     if(@strstr(strtolower($sub), strtolower($input))){ 
    $subArray = iterator_to_array($subArray); 
      $outputArray[] = array_merge($subArray, array('Matched' => $id)); 
     } 
    } 

    return $outputArray; 
} 
0

не думаю, что есть predifned функция для этого, но вот один:

function sub_array_search($array, $sub_key, $value, $strict = FALSE) 
{ 
    foreach($array as $key => $sub_array) 
    { 
     if($sub_array[$sub_key] == $value) 
     { 
     if(!$strict OR $sub_array[$sub_key] === $value) 
     { 
      return $key; 
     } 
     } 
    } 

    return FALSE; 
} 
Смежные вопросы