إزالة التكرارات من wp_user foreach باستخدام array_unique - خطأ في العرض؟

StackOverflow https://stackoverflow.com//questions/20032596

سؤال

من خلال الجمع بين التصنيفات وأدوار المستخدم، أقوم بإدراج جميع مصطلحات ضريبة "الكلب"، ولكل مصطلح "كلب"، قائمة بجميع "الألوان" المرتبطة بملف تعريف المستخدم.مثال:

  • المستخدم 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)
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top