2015-01-16 2 views
1
$events = get_posts(array('post_type' => 'event','post_status' => 'publish')); 
     if ($events) : 
     echo '<ul class="event-months">'; 
      foreach ($events as $event) { 
       $metabox = get_post_meta($event->ID, 'event_options', true); 
       $month = isset($metabox['start_month']) ? $metabox['start_month'] : ''; 

       var_dump($month); 

        echo '<li><a href="" title="">' . $month . '</a></li>'; 
      } 
    echo '</ul>'; 
     endif; 

Он печатает это:Избегайте дублирования строки в массиве

string 'January' (length=7) 
string 'February' (length=8) 
string 'January' (length=7) 

, но я хочу, чтобы напечатать как это:

string 'January' (length=7) 
string 'February' (length=8) 

следует избегать дублирования строк.

+0

использование array_unique для удаляет повторяющиеся значения из массива. например: 'array_unique ($ month);' – alfa6661

+0

Да, я уже пробовал это $ month = implode ('\ n', array_unique (explode ('\ n', $ month))); но ничего не делает. – Ask4Tec

+0

@ Ask4Tec сохраняет данные в $ month [], в этом случае вы получите все значения в массиве. На данный момент $ month - это строка –

ответ

1

Пожалуйста, попробуйте это,

$events = get_posts(array('post_type' => 'event','post_status' => 'publish')); 
    if ($events) : 
    echo '<ul class="event-months">'; 
     foreach ($events as $event) { 
      $metabox = get_post_meta($event->ID, 'event_options', true); 
      $month[] = isset($metabox['start_month']) ? $metabox['start_month'] : ''; 
     } 

     $unique_month = array_unique($month); 

     foreach ($unique_month as $month) 
     { 
      var_dump($month); 
      echo '<li><a href="" title="">' . $month . '</a></li>'; 
     } 

    echo '</ul>'; 
    endif; 
0

Я не знаю PHP, но, возможно, псевдо-код может помочь:

for each event in events 
    for each test_event in events 
     var cnt = 0 
     if event == test_event then cnt++ 
    next 
    if cnt > 1 (you should always match once) 
     break/skip 
    else 
     display 
    end if 
next 

В основном, поместите вложенный цикл, прежде чем сделать что-нибудь, чтобы проверить события были дублированы.

0
$events = get_posts(array('post_type' => 'event','post_status' => 'publish')); 
$events=array_unique($events); 
+0

Даже если это может сделать трюк, было бы неплохо объяснить это немного. –

Смежные вопросы