массив php получает позиции определенного значения


У меня есть один массив, и я хочу получить позиции одного определенного значения

Пример:

$my_array = array(0,2,5,3,7,4,5,2,1,6,9);

Мой поиск Номер 5 позиции Номер 5 в массиве были (2 и 6)

Если я вызываю функцию array_search, всегда возвращает первую позицию в массиве, которая 2.

Есть ли в любом случае возможность получить две или более позиции определенной ценности?

Author: PeeHaa, 2012-08-28

4 answers

Используйте array_keys с необязательным параметром поиска, который должен возвращать все ключи.

$matches = array_keys($my_array, 5);

 11
Author: christian.thomas, 2012-08-28 12:25:25

Взгляните на array_keys второй параметр. Вы можете получить ключи только соответствующие $search_value

 2
Author: Korcholis, 2012-08-28 12:25:36

Просто выполните цикл по массиву:

/* Searches $haystack for $needle.
   Returns an array of keys for $needle if found,
   otherwise an empty array */
function array_multi_search($needle, $haystack) {
  $result = array();
  foreach ($haystack as $key => $value)
    if ($value === $needle)
      $result[] = $key;
  return $result;
}
 1
Author: Emil Vikström, 2012-08-28 12:24:09
  $result = array();
  foreach ($array as $key => $value)
   {
      $result[$value] =implode(',',array_keys($array,$value))

  }
  echo '<pre>';
print_r($result);

Это даст вам массив со значениями в качестве ключа и их вхождениями в виде значений, разделенных запятой

 1
Author: Sumit Neema, 2012-08-28 12:34:23