Искать внутри массивов, считать, находить дубликаты, сравнивать - PullRequest
1 голос
/ 05 сентября 2010

Несколько КАК вопросы о простых и многомерных массивах:

1) Как искать в простых и многомерных массивах?

2) Как подсчитать количество результатов поиска?

3) Как поймать дубликаты внутри:

 3.1 multidimensional array?

 3.2 simple array?

 3.3 in array's search results?

 3.4 and remove them?

4) Каксравнить два массива (многомерный тоже?

Ответы [ 3 ]

2 голосов
/ 05 сентября 2010

Чтобы удалить дубликаты, попробуйте это: array_unique

Количество результатов поиска:

$values = array_count_values($array); 
$count = $values[$value]; //$value is what you search for
2 голосов
/ 05 сентября 2010
  1. Для поиска, если значение существует в простом массиве, просто используйте in_array, чтобы получить ключ значения, используйте array_search.Для многомерных массивов напишите рекурсивную функцию, которая будет искать значения и выполнять рекурсивный анализ, если значение является массивом (подмассивом).
  2. Пусть приведенная выше функция возвращает общее найденное и суммирует все субрекурсии, возвращая значения.
  3. Для перехвата дубликатов в:
    1. Многомерные массивы: рекурсивная функция с той же концепцией, что и выше
    2. Простые массивы: ключи точно не дублируются, и используйте array_unique для удаления дубликатов (вы можете проверить длину массива до и после, чтобы увидеть, было ли что-либо удалено, что означает, что дубликат был найден).
    3. результаты поиска должны быть простым массивом, передать его вышеупомянутому.
    4. чтобы удалить их;array_unique, как указано выше.
  4. для сравнения массивов: array_ intersect и array_ diff, для многомерного использования этих функций вариация функции обратного вызова пользователя для достижения того, что вы хотите.

Также взгляните на Функции PHP Array .

1 голос
/ 05 сентября 2010

Поиск: array_search

Дубликаты: in_array

Сравнить: array_diff ИЛИ array_intersect

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

Для определения количества ключей в массиве вы можете просто использовать функцию count(), так как она принимает массивы. Итак, для подсчета результатов поиска вы можете сделать следующее:

count(array_search("1", $array)); //1 being the needle and $array the haystack
...