Поиск в массиве - PullRequest
       7

Поиск в массиве

1 голос
/ 11 августа 2010

$total - это многомерный массив:

Array (
    [1] => Array ( [title] => Jake [date] => date )
    [2] => Array ( [title] => John [date] => date )
    [3] => Array ( [title] => Julia [date] => date )
)

Как искать значение [title] и давать в качестве идентификатора результата массива?

Если мы ищем Julia это должно дать 3 (ID [3]).

Спасибо.

Ответы [ 3 ]

2 голосов
/ 11 августа 2010
function get_matching_key($needle, $innerkey, $haystack) {
  foreach ($haystack as $key => $value ) {
    if ($value[$innerkey] == $needle) {
      return $key;
    }
  }

  return NULL;
}

$key_you_want = get_matching_key("Julia", "title", $total);
1 голос
/ 11 августа 2010

Возможная душа:

function search_array($search,$array){
    $cnt=count($array);
    for($i=0;$i<$array;$i++){
        if($search==$array[$i]['title']){
            return $i;
        }
    }
}
1 голос
/ 11 августа 2010

Хорошо, извините за мой предыдущий ответ, не заметил, что это был вложенный массив. Вы можете попробовать это вместо этого:

function recursiveArraySearch($haystack, $needle, $index = null)
{
    $aIt   = new RecursiveArrayIterator($haystack);
    $it    = new RecursiveIteratorIterator($aIt);

    while($it->valid())
    {
        if (((isset($index) AND ($it->key() == $index)) OR (!isset($index))) AND ($it->current() == $needle)) {
            return $aIt->key();
        }

        $it->next();
    }

    return false;
}

$array = array(3 => array('title' => 'Julia'));

$key = recursiveArraySearch($array, 'Julia');
echo $key;

Результат:

3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...