Почему мой рекурсивный поиск по массиву не работает на этом массиве данных? - PullRequest
1 голос
/ 26 сентября 2011

У меня есть функция поиска по рекурсивному массиву, которая ранее работала с лечением. По какой-то причине теперь, похоже, говорится, что в массиве есть вещи, которых на самом деле нет.

IE, у меня есть такой массив

Array
(
[0] => Array
    (
        [name] => people
        [groups] => Array
            (
                [0] => Array
                    (
                        [name] => tom
                    )

                [1] => Array
                    (
                        [name] => john
                    )

            )

    )

)

И моя функция рекурсивного поиска:

function searchArrayRecursive($needle, $haystack){

  foreach ($haystack as $key => $arr) {

    if(is_array($arr)) {

      $ret=searchArrayRecursive($needle, $arr);

      if($ret!=-1) return $key.','.$ret;

    } else {

      if($arr == $needle) return (string)$key;

    }

  }

  return -1;

} 

Однако, если бы я сделал следующее:

$search = searchArrayRecursive('kim',$the_array);

if($search != -1) {

  echo 'result: found<br />';

} else {

 echo 'result: not found';

}

Я получаю результат: найдено Его явно нет в массиве. Может быть, моя функция никогда не работала. возможно мои головы назад. Есть идеи?

примечание: я также получаю результат: найдено при поиске Тома или Джона о.О

1 Ответ

0 голосов
/ 01 октября 2011

Этот пример работает как указано. Возможно, ваши фактические данные имеют смешанный регистр? ('john'! = 'John') или, возможно, лишние пробелы или случайные символы новой строки, потому что они не были обрезаны при создании массива?

Попробуйте использовать var_dump () вместо print_r (). Он должен показать вам точный характер данных, которые вы пытаетесь найти. Я подозреваю, что ваши данные могут быть не в том формате, в котором вы ожидаете.

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