У меня есть массив следующим образомПоиск значений в массиве вложенных
array(2) {
["operator"] => array(2) {
["qty"] => int(2)
["id"] => int(251)
}
["accessory209"] => array(2) {
["qty"] => int(1)
["id"] => int(209)
}
["accessory211"] => array(2) {
["qty"] => int(1)
["id"] => int(211)
}
}
Я пытаюсь найти способ, чтобы проверить значение идентификатора существует в пределах массива и возврата BOOL. Я пытаюсь найти быстрый способ, который не требует создания цикла. Использование функции in_array не работало, и я также читал, что он довольно медленный.
В руководстве по php кто-то рекомендовал использовать flip_array(), а затем isset(), но я не могу заставить его работать для массива 2-го уровня.
делать что-то вроде
if($array['accessory']['id'] == 211)
также будет работать для меня, но мне нужно, чтобы соответствовать все ключи, содержащие аксессуар - не знаю, как сделать это
В любом случае, я вращаюсь в кругах, и может использовать некоторую помощь. Кажется, что это должно быть легко. Благодарю.
Одной из функций PHP, которые я собирался предложить, была «array_walk_recursive», которая не требовала бы, чтобы вы выполняли цикл. Однако эта функция не работает, если ваш 'ключ' имеет значение массива, как и ваш. Петля, возможно, единственный способ. Могу ли я спросить, почему без петель? –
@ Энтони Форлони: Я немного смущен. Эта функция должна делать именно то, что хочет OP. Можете ли вы объяснить, почему это не сработает? Единственная проблема, которую я вижу, заключается в том, что она проведет все значения, даже если совпадение уже найдено. –
Хорошо, когда я проверяю, существует ли это значение, оно уже перебирает все значения для идентификатора (содержащегося в объекте) для соответствия. Я просто пытаюсь сократить время поиска. – dardub