【发布时间】:2021-12-06 10:32:26
【问题描述】:
我正在寻找一种从数组中去除重复内容的方法。问题是这些本质上都是从while循环获得的不同数组
我有 2 个自定义帖子类型“学校”和“课程”,它们之间有一个 ACF 字段来表示彼此之间的关系。在课程分类页面上,我展示了当前分类的课程,以及与该分类的课程相关的学校。因此,学校的重复次数与与该学校相关的课程一样多。
所以,这是
<?php
while (have_posts()) :
the_post();
$school_items = get_field('shkola');
foreach ($school_items as $school_item) :
endforeach; ?>
<pre><?php print_r($school_item); ?></pre>
<?php endwhile; ?>
给我包含重复的记录
WP_Post Object ([ID] => 37)
WP_Post Object ([ID] => 37)
WP_Post Object ([ID] => 32)
我尝试了array_unique,但我无法正确使用它,它仍然返回重复。
这和https://support.advancedcustomfields.com/forums/topic/strip-out-duplicate-content-from-an-array/这里的情况非常相似,但是那里描述的方法对我也不起作用。
我将不胜感激在这件事上的任何帮助)
更新
来自print_r($school_items);的输出
Array ([0] => WP_Post Object ( [ID] => 37 ) )
Array ([0] => WP_Post Object ( [ID] => 37 ) )
Array ([0] => WP_Post Object ( [ID] => 32 ) )
【问题讨论】:
-
你是说循环完成后的
<pre><?php print_r($school_item); ?></pre>给出了 3 个 WP_Post 对象的数组吗?因为这不太可能,除非 school_item 本身就是一个数组 -
是的,没错。也许这是因为“学校”帖子类型的请求是在“课程”分类页面上完成的。我有“课程”(课程类别)的分类法。他们首先将所有课程分配到此类别,然后需要“学校”。
-
请在
$school_items = get_field('shkola');行之后给我看一个print_r($school_items);。谢谢 -
感谢您的帮助)。它看起来像这样:
Array ([0] => WP_Post Object ( [ID] => 37 )) Array ([0] => WP_Post Object ( [ID] => 37 )) Array ([0] => WP_Post Object ( [ID] => 32 )) -
好的,我给你的代码应该只打印一次标题并忽略重复项,但是它不会从
$school_items数组中删除项目。您是否要实际从该数组中删除重复的 ID 并且不打印重复的标题
标签: php arrays wordpress advanced-custom-fields