إزالة التكرارات من wp_user foreach باستخدام array_unique - خطأ في العرض؟
-
21-12-2019 - |
سؤال
من خلال الجمع بين التصنيفات وأدوار المستخدم، أقوم بإدراج جميع مصطلحات ضريبة "الكلب"، ولكل مصطلح "كلب"، قائمة بجميع "الألوان" المرتبطة بملف تعريف المستخدم.مثال:
- المستخدم 1 لديه تعريف "الكلب:المسترد الذهبي" و"اللون:"أصفر" مخزنة مع ملف التعريف.
- المستخدم 2 لديه تعريف "الكلب:المسترد الذهبي" و"اللون:أسود" مخزن مع ملف التعريف.
- المستخدم 3 لديه تعريف "الكلب:المسترد الذهبي" و"اللون:أسود" مخزن مع ملف التعريف.
العنوان 3 علامات أدناه يبرز "اسم المصطلح" = والذي سيكون في هذه الحالة "كلب".تحت الكلب, يجب أن تكون هناك قائمة "بالألوان" المرتبطة بهذا الكلب عبر تعريف المستخدم - IE، الأصفر، الأسود. الشيء المهم هو أن "الأسود" يظهر مرة واحدة فقط، وليس مرتين.أحاول إزالة التكرارات، لكني أتلقى خطأً.
تم التعديل:الخطأ لم يعد قائما.ومع ذلك، الآن - صدى $array يردد فقط اللون "الأسود"، وليس "الأصفر" أو أي لون آخر.
أي أفكار؟
<?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 }?>
المحلول 2
الحل للمشكلة، شكرا جزيلا ل Amal للمشي عبر ذلك معي
giveacodicetagpre.نصائح أخرى
افتراضيًا، سيحاول PHP تحويل الكائنات إلى سلاسل للمقارنة.وهذا هو سبب الخطأ.يمكنك تحديد المعلمة الثانية ل array_unique()
لتجاوز هذا:
foreach(array_unique($users, SORT_REGULAR) as $user)