Что такое код array_search


array_search — ищет в массиве заданное значение и возвращает соответствующий ключ, в случае успеха.

Описание

mixed array_search (mixed needle, array haystack [, bool strict])

Ищет в haystack значение needle и возвращает ключ, если оно найдено в массиве, FALSE — в противном случае.

Примечание: до PHP 4.2.0 array_search() при неудаче возвращает NULL вместо FALSE.

Если необязательный третий параметр strict установлен TRUE, то array_search() будет также проверять типы needle в haystack.

Эта функция может возвращать Boolean FALSE, но может также возвращать не-Boolean значение, которое вычисляется в FALSE, такое как или «». Прочтите раздел о Booleans. Используйте операцию === для тестирования return-значения этой функции.

Как получить идентификатор в массиве с поиском?

У нас есть списки категорий (ID и Название категории) в переменных $ категорий. Однако, поскольку имена категорий часто неоднозначны, у нас есть другие варианты сопоставления переменных названия категории с ее именем исходной категории в $ mapped_categories. Например, название категории «Блины», сопоставленное с названием оригинальной категории «Блины/Вафли/Крепы», поэтому имеют идентификатор категории 133.

$ mapped_categories не может быть прочитан, Помогите мне это получить.

2 ответа

2 Robert [2020-03-11 12:25:00]

Я думаю, вам нужно пересечение

Однако я не знаю, что такое $ mapped_categories, потому что это непонятно из вашего вопроса.

Другое возможное решение, которое вы можете найти:

Он будет возвращать ключи найденных категорий на основе сопоставления.

0 codisfy [2020-03-11 12:32:00]

Вы задаете проблему, неясно, но я предполагаю.

Если элемент из ваших входных_категорий соответствует одной из категорий, то вы возвращаете свой index , иначе вы проверяете $mapped_categories для его сопоставленной категории, а затем просматриваете $input_categories и возвращаете index (id)

Таким образом, ваш код должен выглядеть примерно так:

Эта встроенная функция PHP используется для поиска определенного значения в массиве, и если значение найдено, оно возвращает соответствующий ключ. Если существует более одного значения, будет возвращен ключ первого соответствующего значения.

Синтаксис :

Параметры:
Эта функция принимает три параметра, как описано ниже:

  1. $ value (обязательно): относится к значению, которое необходимо найти в массиве.
  2. $ array (обязательный): ссылается на исходный массив, который необходимо найти.
  3. strict_parameter (необязательно): может быть установлен в TRUE или FALSE и относится к строгости поиска. Значением этого параметра по умолчанию является ЛОЖЬ.
    • Если TRUE, то функция проверяет идентичные элементы, т. Е. Целое число 10 будет рассматриваться как отличное от строки 10.
    • Если ЛОЖЬ, строгость не поддерживается.

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

Ниже программа иллюстрирует функцию array_search () в PHP:

26 просмотра

3 ответа

51 Репутация автора

У меня есть массив $ DATA, как показано ниже

Теперь я хочу найти значения SCAN_CODE в $ CODES из $ DATA

Таким образом, используя array_search, то же самое возвращает ошибку. Мой текущий код для получения ключа

$ SEARCH_KEY возвращается

Мое требование состоит в том, чтобы получить первое значение INDEX VALUE, даже если существует несколько INDEXES с одинаковым значением VALUE для SCAN_CODE, и я предполагаю, что array_search возвращает только первый экземпляр.

Ответы (3)

плюса

50061 Репутация автора

Предполагая, что вы $DATA на самом деле являетесь источником JSON, и что вы отредактировали некоторые из них и оставили висячую запятую, тогда этот код найдет вам самый низкий индекс, при котором $CODES появляется одно из значений в . Обратите внимание, что вы должны искать значения по отдельности, так как в array_search противном случае вы будете искать массив как значение для сопоставления.

Вывод (для ваших данных):


Если вы хотите найти сканирование с самым ранним, SCAN_TIME который совпадает с одним из кодов, вы можете отсортировать SCANS и затем получить индекс в отсортированный массив, например

Вывод (для моих измененных данных в этой демонстрации ):

Автор: Nick Размещён: 20.08.2020 12:14

плюса

942 Репутация автора

array_search ожидает, что параметр будет найден как строка. Вы передаете array . Вам нужно перебрать $CODES и искать каждый код.

В параметре Haystack необходимо указать массив, в котором происходит поиск.

Если третий параметр Strict установлен в TRUE, то функция Array_search будет искать идентичные элементы в Haystack. Это означает, что также будут проверяться типы Needle в Haystack, а объекты должны быть одним и тем же экземпляром.

Функция Array_search возвращает ключ для Needle, если он был найден в массиве, иначе FALSE.

Если искомое значение присутствует в массиве более одного раза, будет возвращен первый найденный ключ. Для того, чтобы возвратить ключи для всех найденных значений, используйте функцию Array_keys с необязательным параметром Search_value.

Используйте оператор «===» для проверки значения, возвращаемого этой функцией, поскольку данная функция может возвращать как boolean FALSE, так и не-boolean значение, которое приводится к FALSE. За более подробной информацией обратитесь к разделу Двоичные данные (Boolean).

search array

Англо-русский словарь по вычислительной технике и информационным технологиям — 4-е изд. . Сергей Орлов .

Смотреть что такое «search array» в других словарях:

Search for Extra-Terrestrial Intelligence — Search for Extra Terrestrial Intelligence, abrégé par SETI et que l’on peut traduire par « recherche d’une intelligence extraterrestre », est un programme d’origine américaine qui date des années 1960. Il regroupe des projets dont le… … Wikipédia en Français

Search for Extraterrestrial Intelligence — Search for Extra Terrestrial Intelligence Search for Extra Terrestrial Intelligence, abrégé par SETI et que l on peut traduire par « recherche d une intelligence extraterrestre », est un programme d origine américaine qui date des… … Wikipédia en Français

Search for extra-terrestrial intelligence — Search for Extra Terrestrial Intelligence, abrégé par SETI et que l on peut traduire par « recherche d une intelligence extraterrestre », est un programme d origine américaine qui date des années 1960. Il regroupe des projets dont le… … Wikipédia en Français

Search for extraterrestrial intelligence — Search for Extra Terrestrial Intelligence Search for Extra Terrestrial Intelligence, abrégé par SETI et que l on peut traduire par « recherche d une intelligence extraterrestre », est un programme d origine américaine qui date des… … Wikipédia en Français

Search for extraterrestrial intelligence — The search for extraterrestrial intelligence is sometimes abbreviated as SETI. For other uses, see SETI (disambiguation). Screen shot of the screensaver for SETI@home, a distributed computing project in which volunteers donate >Wikipedia

Search for Extraterrestrial Intelligence — SETI ist das Akronym für “Search for Extraterrestrial Intelligence” (deutsch: „Suche nach außerirdischer Intelligenz“). Damit bezeichnet man die Suche nach außerirdischen Zivilisationen. Seit 1960 werden verschiedene wissenschaftliche… … Deutsch Wikipedia

Search data structure — In computer science, a search data structure is any data structure that allows the efficient retrieval of specific items from a set of items, such as a specific record from a database. The simplest, most general, and least efficient search… … Wikipedia

Array data type — Not to be confused with Array data structure. In computer science, an array type is a data type that is meant to describe a collection of elements (values or variables), each selected by one or more indices that can be computed at run time by the … Wikipedia

Search algorithm — In computer science, a search algorithm, broadly speaking, is an algorithm that takes a problem as input and returns a solution to the problem, usually after evaluating a number of possible solutions. Most of the algorithms studied by computer… … Wikipedia

Array of Low Energy X-ray Imaging Sensors — The Array of Low Energy X ray Imaging Sensors (ALEXIS) X ray telescopes feature curved mirrors whose multilayer coatings reflect and focus low energy X rays or extreme ultraviolet light the way optical telescopes focus visible light. The… … Wikipedia

Visual search — In theory of cognition, visual search is a type of perceptual task requiring attention. Visual search involves an active scan of the visual environment for a particular object or feature (the target) among other objects or features (the… … Wikipedia

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

Поиск значения в массиве требуется практически в каждом PHP приложении, скрипте работающим с данными, для чего существует множество способов и специальных функций. В зависимости от задачи и типа поиска следует использовать те или иные инструменты, учитывая их особенности, скорость выполнения и удобство в применении. Далее мы ознакомимся с PHP функциями поиска элементов в массиве, возможными конструкциями и методами, а также выясним какой способ наиболее быстрый.

Функции для поиска в массиве:
array_search — служит для поиска значения в массиве. В случае удачи она возвращает ключ искомого значения, если ничего не найдено — возвращает FALSE. До версии PHP 4.2.0, array_search() при неудаче возвращала NULL, а не FALSE.

Синтаксис функции mixed array_search ( mixed needle, array haystack [, bool strict] ).

Если значение needle (то, что ищем в массиве), является строкой, то производится регистро-зависимое сравнение.

Если передать в функцию в качестве третьего параметра (это не обязательно) значение TRUE, то поиск будет производится с учетом типа переменной.

Стоит учитывать, если искомое значение встречается в массиве несколько раз, то функция вернет только один — первый найденный ключ.

in_array — Проверяет, присутствует ли в массиве значение, в случае успеха возвращает TRUE, неудачи FALSE. Как вы понимаете функция служит для поиска и определения наличия элемента в массиве, ключ на сам же элемент не возвращается.

Синтаксис функции bool in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] )

Функции для перебора элементов массива, с последующим поиском:

foreach — Перебирает элементы массива, работает только с массивами и объектами, в случае использования переменных отличного типа, PHP выдаст ошибку.

Возможны два вида синтаксиса (подробнее тут):

foreach (array_expression as $value)
statement
foreach (array_expression as $key => $value)
statement

Пример использования функции с конструкцией foreach для поиска элемента массива, возвращает TRUE при успехе

Возвращает ключ элемента массива при успехе

while — цикл, с помощью которого также можно произвести поиск элемента в массиве. Подробнее о самой конструкции, тут.

Синтаксис конструкции
while (expr)
statement


Возвращает ключ элемента массива при успехе

Из выше описанных примеров видно, что одни методы служат для поиска элемента в одномерных массивах, другие позволяют организовать поиск в многомерных массивах. Выбор метода зависит от типа обрабатываемых данных, будь то простой массив, или сложные многомерные деревья.

Далее произведем замер среднего времени выполнения функций поиска:

Предупреждение!
Число элементов массива array_search Цикл foreach Цикл while
10 0.0000068 0.0000064 0.0000076
100 0.0000078 0.0000153 0.0000185
1000 0.0000209 0.0001177 0.0001351
10000 0.0004210 0.0012128 0.0018670
100000 0.0039679 0.0130989 0.0175215

Из приведенной таблицы замеров видно, что функция array_search, показывает наилучший результат как при поиске в малых так и больших массивах. При этом время поиска спомощью циклов значительно увеличивается в зависимости от размера массива.

Привет профессионалы, немного застопорился на поиске по «одному значению». Есть код:

Тут иголка (‘needle’) у меня: array(«05_hotel»,»Hotel»), но я знаю только первое значение: ’05_hotel’. Возможно ли найти ключ ‘parent’ массива, где в ‘child’ массиве первое значение известно, а второе — любое? (без for, foreach). Спасибо за внимание.

P.S> Я как бы написал такое чудо:

Но мне кажется есть что то проще, и с array_seacrh();

2 ответа 2

Не претендую на самое елегентное решение, но работать точно будет

array_search

(PHP 4 >= 4.0.5, PHP 5, PHP 7)

array_search — Осуществляет поиск данного значения в массиве и возвращает ключ первого найденного элемента в случае удачи

Описание

Ищет в haystack значение needle .

Список параметров

Если needle является строкой, сравнение происходит с учетом регистра.

Если третий параметр strict установлен в TRUE , то функция array_search() будет искать идентичные элементы в haystack . Это означает, что также будут проверяться типы needle в haystack , а объекты должны быть одним и тем же экземпляром.

Возвращаемые значения

Возвращает ключ для needle , если он был найден в массиве, иначе FALSE .

Если needle присутствует в haystack более одного раза, будет возвращён первый найденный ключ. Для того, чтобы возвратить ключи для всех найденных значений, используйте функцию array_keys() с необязательным параметром search_value .

Эта функция может возвращать как логическое значение FALSE , так и значение не типа boolean, которое приводится к FALSE . За более подробной информацией обратитесь к разделу Булев тип. Используйте оператор === для проверки значения, возвращаемого этой функцией.

Список изменений

Версия Описание
5.3.0 Вместе со всеми внутренними функциями PHP, начиная с версии 5.3.0, array_search() возвращает NULL , если ей были переданы неверные параметры.

Примеры

Пример #1 Пример использования array_search()

= array( 0 => ‘blue’ , 1 => ‘red’ , 2 => ‘green’ , 3 => ‘red’ );

$key = array_search ( ‘green’ , $array ); // $key = 2;
$key = array_search ( ‘red’ , $array ); // $key = 1;
?>

Смотрите также

  • array_keys() — Возвращает все или некоторое подмножество ключей массива
  • array_values() — Выбирает все значения массива
  • array_key_exists() — Проверяет, присутствует ли в массиве указанный ключ или индекс
  • in_array() — Проверяет, присутствует ли в массиве значение

Что такое код array_search

Поиск значения в одномерном или двумерном массиве. Аналогично _ArrayBinarySearch(), но в отличии от него не требуется сортировка.

$avArray Массив для поиска
$vValue Значение для поиска в массиве (по умолчанию полное соответствие содержимому ячейки)
$iStart [необязательный] Индекс массива, от которого начинать поиск
$iEnd [необязательный] Индекс массива, в котором закончить поиск
$iCase [необязательный] Чувствительность к регистру
0 — (по умолчанию) Поиск без учёта регистра
1 — Поиск с учётом регистра
$iCompare [необязательный]
0 — (по умолчанию) Сравнение с приведением к одному типу, например при $iCase = 0 эти значения будут являться совпадением: «строка» = 0, «» = 0 или «0» = 0
1 — Частичное совпадение, искомая строка может быть частью строки содержащейся в ячейке массива (StringInStr)
2 — При сравнении учитывать совпадение типа переменной с помощью VarGetType
$iForward [необязательный] Если установлено в 0, то искать в массиве от конца к началу (а не от начала к концу)
$iSubItem [необязательный] Индекс колонки для поиска в двумерном массиве
Успех: Возвращает первый найденный индекс массива, в котором найдено значение $vValue
Ошибка: Возвращает -1, устанавливает @error :
@error : 1 — $avArray не является массивом
2 — Массив $avArray не является одномерным или двумерным массивом
4 — $iStart больше $iEnd
6 — Значение $vValue не найдено в массиве
7 — Размерность массива $avArray более двух
(3, 5 — Устаревшие коды ошибок)

Эта функция возможно медленнее _ArrayBinarySearch () , но полезна, когда порядок массива не может быть изменён.

$sSearch = InputBox ( «Демонстрация _ArraySearch()» , «Укажите текст для поиска» )
If @error Then Exit

$iIndex = _ArraySearch ( $avArray , $sSearch , 0 , 0 , 0 , 1 )
If @error Then
MsgBox ( 4096 , «Не найдено» , ‘»‘ & $sSearch & ‘» не был найден в массиве.’ )
Else
MsgBox ( 4096 , «Найдено» , ‘»‘ & $sSearch & ‘» найден в массиве в позиции ‘ & $iIndex & «.» )
EndIf

$sSearch = InputBox ( «Демонстрация _ArraySearch()» , «Укажите текст для поиска» )
If @error Then Exit

$sColumn = InputBox ( «Демонстрация _ArraySearch()» , «Укажите колонку для поиска» )
If @error Then Exit
$sColumn = Int ( $sColumn )

$iIndex = _ArraySearch ( $avArray , $sSearch , 0 , 0 , 0 , 1 , 1 , $sColumn )
If @error Then
MsgBox ( 4096 , «Не найдено» , ‘»‘ & $sSearch & ‘» не найдено в колонке ‘ & $sColumn & ‘.’ )
Else
MsgBox ( 4096 , «Найдено» , ‘»‘ & $sSearch & ‘» найден в массиве в позиции ‘ & $iIndex & ‘ в колонке ‘ & $sColumn & ‘.’ )
EndIf

Илон Маск рекомендует:  Как в Word большие буквы сделать маленькими
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL