Php 删除重复的wp_用户foreach和array_unique-呈现错误?
结合分类法和用户角色,我列出了tax“dog”的所有术语,并为每个术语“dog”列出了链接到用户配置文件的所有“颜色”的列表。例如:Php 删除重复的wp_用户foreach和array_unique-呈现错误?,php,wordpress,foreach,taxonomy,array-unique,Php,Wordpress,Foreach,Taxonomy,Array Unique,结合分类法和用户角色,我列出了tax“dog”的所有术语,并为每个术语“dog”列出了链接到用户配置文件的所有“颜色”的列表。例如: 用户1在配置文件中存储了元“狗:金色猎犬”和“颜色:黄色” 用户2有元“狗:黄金猎犬”和“颜色:黑色”存储的个人资料 用户3将元“狗:金色猎犬”和“颜色:黑色”存储在配置文件中 下面的标题3标记显示了“术语名称”=在本例中为“狗”。在狗的下方,应该有一个“颜色”列表,通过用户元链接到这只狗,即黄色、黑色。重要的是,“黑色”只出现一次,而不是两次。我正在尝试删除
- 用户1在配置文件中存储了元“狗:金色猎犬”和“颜色:黄色”李>
- 用户2有元“狗:黄金猎犬”和“颜色:黑色”存储的个人资料李>
- 用户3将元“狗:金色猎犬”和“颜色:黑色”存储在配置文件中
<?php $terms = get_terms('dogs');
$count = count($terms);
if ( $count > 0 ){ foreach ( $terms as $term ) { ?>
<h3><?php echo $term->name; ?></h3> // Show different "dog" type names
<div class="listed_dogs_color_names">
// Now search all editor and contributor user profiles for "dog" and "color" user_meta. Color and dog are both taxonomies that are used both with posts and users (user meta)
// If matches with the "dog" above, list "color" underneath "dog name" in <h3></h3> above.
<?php
$term_parent = $term->parent;
$term_slug = $term->slug;
$editor_query = new WP_User_Query(
array(
'role' => 'editor',
'meta_key' => $term_parent,
'meta_compare' => '=',
'meta_value' => $term_slug,
)
);
$editors = $editor_query->get_results();
$contributor_query = new WP_User_Query(
array(
'role' => 'contributor',
'meta_key' => $term_parent,
'meta_compare' => '=',
'meta_value' => $term_slug,
)
);
$contribs = $contributor_query->get_results();
$users = array_merge( $contribs, $editors );
?>
<?php
$array = array(); // initialize as empty array ?>
<?php if (!empty($users)) {?>
<?php foreach ($users as $user) :
$b = $user->color;
$color = explode("\n", $b);
$array[] = $color[0];
?>
<?php endforeach; ?>
<?php $array = array_unique($array); ?>
<?php
echo "<li>";
echo $array[0];
echo "</li>";
?>
<?php } ?>
</div><!--close-->
<?php }?>
<?php }?>
//显示不同的“狗”类型名称
//现在搜索所有编辑器和贡献者用户配置文件中的“dog”和“color”用户。Color和dog都是用于POST和user(user meta)的分类法
//若和上面的“狗”匹配,请在上面的“狗名”下面列出“颜色”。
默认情况下,PHP将尝试将对象转换为字符串进行比较。这是导致错误的原因。您可以指定的第二个参数来替代此参数:
foreach(array_unique($users, SORT_REGULAR) as $user)
这个问题的解决方案,非常感谢@Amal和我一起走过它
<?php if (!empty($users)) {?>
<ul>
<?php
$array = array();
foreach ($users as $user) :
$b = $user->color;
$color = explode("\n", $b);
$array[] = $color[0];
?>
<?php endforeach; ?> // close the foreach, looped through all users already and stored meta into array
<?php $array = array_unique($array, SORT_REGULAR); ?> // take array and remove dupes
<?php foreach ($array as $item) { ?> // foreach and style. can also implode and separate with commas via <?php $spitarray = implode ( ", ", $spitarray); ?>
<li><?php echo $item; ?></li>
<?php } ?>
</ul>
<?php } ?>
//关闭foreach,遍历所有已经存在的用户,并将meta存储到数组中
//获取阵列并删除重复项
//形式和风格。也可以内爆并通过逗号分隔