array_unique - レンダリングエラーでwp_user foreachの重複を削除しますか?
-
21-12-2019 - |
質問
分類学とユーザーの役割の組み合わせ、私はすべての税の「犬」、そしてユーザープロファイルにリンクされているすべての「色」のリストをすべてリストしています。例:
- ユーザー1は、メタ "犬:ゴールデンレトリーバー"と "色:黄色"がプロファイルに保管されています。
- ユーザー2はメタ "犬:ゴールデンルテリーバー"と "カラー:ブラック"をプロファイルに保存しています。
- ユーザー3は、プロファイルと「犬:ゴールデンレトリーバー」と「カラー:ブラック」を持っています。
ヘッディング3以下のタグは「用語名」=この場合は「犬」になるでしょう。犬の下、ユーザーメタ - IE、黄色、黒を介してこの犬にリンクされている「色」のリストがあるはずです。重要なことは、「黒」が2回だけ見られないということです。私は重複を削除しようとしていますが、私はエラーが発生しています。
編集:エラーがなくなりました。ただし、今 - エコー$アレイは "黄色い"または他の色ではなく、エコー "黒"だけです。
あらゆる考え?
<?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に感謝します
<?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 } ?>
. 他のヒント
デフォルトでは、PHPはオブジェクトを比較のために文字列に変換しようとします。これはエラーを引き起こしています。 array_unique()
の2番目のパラメータを指定して、これをオーバーライドすることができます。
foreach(array_unique($users, SORT_REGULAR) as $user)
. 所属していません StackOverflow