Удалить двойные значения с помощью php внутри массива (wp-query и 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 не должен работать?

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

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


person mmdwc    schedule 12.11.2014    source источник


Ответы (1)


$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.
 }
person dognose    schedule 12.11.2014
comment
Большое спасибо, @ dognose мне пришлось адаптировать ваш код, и теперь он отлично работает! большое спасибо - person mmdwc; 12.11.2014