我们正在升级一个网上商店,所以过滤有点不同。现在我们只需获取与一个或多个选定过滤器值相关的所有产品 ID。
//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”值来自同一个过滤器“处理器”,因此我们希望将它们结合起来,因为访问者希望所有产品都带有 AMD E 或 INTEL 处理器。
现在我们只想选择出现在两个数组中的 ID。到目前为止,我们已经尝试了很多方法,但它在任何尝试中都没有返回我们期望的结果。
问题在于 key => 数组对$result
的数量是动态的,就像 SQL 返回的 ID 数量一样。当 in 的第一个数组$result
是一个简短的 ID 列表时,array_intersect()
当 in 有多个数组时,不会返回所有预期结果$result
。
merge_array()
只会结合一切。因此,访问者将看到所有具有 8 GB 内存或包含 AMD E 或 INTEL 处理器的产品。
我们正在寻找 ('8 GB') AND ('ADM E' OR 'INTEL') 解决方案。
当更多过滤器被激活时,事情变得复杂了:('8 GB' OR '12 GB') AND ('ADM E' OR 'INTEL') AND ('HP' OR 'Apple' OR 'Sony')
(希望我没有让你试图解释情况以及我们现在正在尝试做的事情:s)
我们还尝试过通过 SQL 完成工作。正如您可以在没有任何运气的情况下阅读这个问题一样。
以前有人处理过这样的事情吗?