【发布时间】:2018-03-02 07:03:13
【问题描述】:
我有一个循环浏览产品列表的 WordPress 页面。产品是使用 ACF 转发器字段创建的。每个产品都有一个或多个属性(例如浅色、深色、金属色、彩色),使用复选框字段应用。
目的是查询页面上所有产品的复选框重复字段,查看单独分配给每个产品的属性,并为所有产品输出一个列表(去除重复项)。
例如,如果有 10 个产品,并且它们之间被标记了四个唯一属性,则只会输出四个唯一属性。
我尝试创建一个空数组,然后循环遍历它。当前循环输出重复值(例如light dark light dark light dark而不是light dark)
<?php if (have_rows('product')): while (have_rows('product')) : the_row();
$attributes = get_sub_field_object('product_attributes');
$values = $attributes['value'];
if($values) {
$filter_attributes = array();
foreach ($values as $value) {
if (in_array($attributes, $filter_attributes)) {
continue;
}
$filter_attributes[] = $attributes;
echo $value . " ";
}
} endwhile; endif; ?>
【问题讨论】:
-
$values来自哪里?我想应该是$attributes? -
已更新到 $attributes,循环仍然产生重复
-
我假设您没有得到任何结果,因为您的问题非常含糊(“到目前为止没有骰子”并没有给出任何问题的迹象)。所以问题实际上是
$filter_attributes数组有重复?那么它是如何工作的,因为您仍在foreach循环中使用$values?$values是什么,它如何具有正确的值?我不确定您的代码要做什么。您希望if (in_array...) continue实现什么目标? -
感谢您的帮助,已更新以显示
$values是 ACF 复选框值。我正在尝试输出每个属性的单个实例 -
你的逻辑全错了。例如,您希望通过
if (in_array...) continue实现什么目标?这没有任何影响。
标签: php arrays wordpress foreach