【发布时间】:2017-12-27 22:03:40
【问题描述】:
我有一个多维数组,其深度不确定,或者说取决于 magento 网站中有多少类别和子类别(和子子类别),因为我调用函数 $product->getCategoryIds()。
现在假设我将所有产品(添加到购物车/结帐)类别树层次结构作为多维数组,如下所示:
Array
(
[0] => Array
(
[0] => 40
)
[1] => Array
(
[0] => 40
)
[2] => Array
(
)
[3] => Array
(
)
[4] => Array
(
[0] => 16
)
[5] => Array
(
[0] => 16
)
)
但由于它是电子商务网站的类别层次结构,您可以放心地想象,网站可以有任何深度的类别、子类别、子子类别等。产品类别的层次结构未知,因此类别 ids 数组的深度未知。
现在是我的困惑和疑问,如何通过使用各种 php 数组函数的组合来检查每个子数组和/或子子数组是否包含特定的类别 ID(例如 40 或 16)并尽可能少地使用循环?
我能想到的只是嵌套的for/foreach 循环,它有性能开销,所以我正在寻找更好的替代方案。
【问题讨论】:
-
您是否需要知道该项目在哪里或仅在它在那里时才知道?
-
只需要知道每个子数组或子子数组是否包含该项目(在我的情况下为
category-id)。如果可以找到项目的位置,那就太好了,但是“是否存在”也很有帮助。 -
如果存在,可以通过展平数组并使用 in_array 来完成。这是第一步。我想如果那里是真的,你需要一个递归函数来找到位置。 stackoverflow.com/questions/4128323/…stackoverflow.com/questions/526556/…
标签: php magento multidimensional-array element sub-array