Удалите двойные значения, используя php внутри массива (wp-запрос и ACF)

Я использую расширенные настраиваемые поля на своем веб-сайте с полем выбора (type_evenement) с 5 возможными значениями (val_1, val_2, val_3, val_4, val_5)

Я также использую wp-запрос на пользовательской странице шаблона для отображения сообщений из категории, для всех сообщений используется настраиваемое поле «Выбрать».

Я пытаюсь отобразить все выбранные значения на этой странице, но только один раз, поэтому я пытаюсь удалить двойные значения, используя array_unique, но это не работает.

Вот код, который я написал, чтобы отобразить значения внутри цикла, он отображает все значения, даже когда удваивается, например, val_1, val_3, val_4, val_2, val_1, val_1 …

<?php

// args
$today = date("Ymd");$args = array (
'category' => 5,
'posts_per_page' => -1,
'meta_key'       => 'debut_date',
'orderby'       => 'meta_value_num',
'order'          => 'ASC',
'meta_query' => array(
array(
'key'       => 'fin_date',
'compare'   => '>=',
'value'     => $today,
)
),
);

// get results
$the_query = new WP_Query( $args );

// The Loop
?>

<?php if( $the_query->have_posts() ): ?>

<?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?>

<?php
$input = get_field('type_evenement');
echo($input);
?><?php endwhile; ?>

<?php endif; ?>

<?php wp_reset_query(); ?>

но при использовании array_unique больше ничего не отображается:

<?php
$input = get_field('type_evenement');
$result = array_unique($input);
echo($result);
?>

Я не понимаю, что я делаю неправильно, я знаю, что get_field возвращает массив, так что я думаю, что array_unique должен работать no?

Если кто-то может помочь мне с этим, было бы здорово!

большое спасибо

0

Решение

$input это просто одно значение, а не массив. Дубликаты повторно присваиваются этому значению while loop,

<?php while ( $the_query->have_posts() ) : $the_query->the_post();

$input = get_field('type_evenement');
echo($input);

Вы можете исправить запрос, который возвращает дубликат, но так как он выглядит как WordPress, это может не сработать.

Таким образом, вы можете заполнить массив первый, затем используйте array_unique() а затем повторить значения
(или вы можете просто не добавлять значение снова, если временный массив уже содержит его):

$myArr = array();

while ( $the_query->have_posts() ) {
$the_query->the_post();
$input = get_field('type_evenement');

if (!in_array($input,$myArr)){
$myArr[] = $input;
}
}

foreach ($myArr AS $value){
echo $value; //unique values.
}
0

Другие решения

Других решений пока нет …