Мы обновляем интернет-магазин, поэтому фильтрация немного отличается. Теперь мы просто получаем все идентификаторы продукта, которые связаны с одним или несколькими выбранными значениями фильтра.Объединить массивы, чтобы они содержали только повторяющиеся значения.
//Filter value '8 GB'
$result[] = array(1,6,5,8,9);
//Filter value 'AMD E' (and)OR 'INTEL'
$result[] = array(1,5,8,9,10,500,502,503,600,607,608,...);
«AMD E» и значение «» Intel от того же самого фильтра «Processor», поэтому мы хотели бы это вместе, как посетитель хотел бы, чтобы все продукты с AMD E или процессором INTEL.
Теперь мы хотели бы выбрать только идентификаторы, которые встречаются в обоих массивах. Мы уже пробовали кучу методов, но теперь мы просто не возвращаем то, что ожидаем в любом случае.
Проблема в том, что количество пар ключей => массива в $result
является динамическим, как и число идентификаторов, возвращаемых SQL. когда первый массив в $result
является коротким списком идентификаторов, array_intersect()
не вернет все ожидаемые результаты, если в массиве $result
имеется несколько массивов.
merge_array()
будет просто комбинировать все. Таким образом, посетитель увидит ВСЕ продукты, которые имеют 8 ГБ памяти или которые содержат процессор AMD E или INTEL.
Мы ищем решение ('8 ГБ') И ('ADM E' или 'INTEL').
Все становится сложнее при активировании большего количества фильтров: ('8 ГБ' ИЛИ '12 ГБ ') И (' ADM E 'ИЛИ' INTEL ') И (' HP 'ИЛИ' Apple 'ИЛИ' Sony ')
(Надеюсь, что я не потерять вы пытаетесь объяснить ситуацию и то, что мы пытаемся сделать сейчас: с)
мы также пробовали получать вещи сделано через SQL. Как вы можете прочитать в this question без везения.
Кто-нибудь занимался чем-то подобным раньше?
Я не уверен, что понимаю. Вы хотите пересечение всех подматриц, хранящихся в массиве $ results? Если да, см. Мой ответ. Если не просьба уточнить –
Ну да, мы бы хотели этого, но каким-то образом, если в первом субадресе содержится только 4 идентификатора, а более поздние массивы содержат больше, он будет проверять только позже на наличие 4 идентификаторов в первом подпункте -Архив .. Правильно? – Brainfeeder
И что, если один из подмассивов пуст, так как для этого значения фильтра нет продуктов ... Вся функция не вернет никаких результатов. – Brainfeeder