2016-06-12 4 views
0

Я застрял в течение 6 часов на этом одном фрагменте кода. Что я делаю не так?Невозможно сравнить две идентичные строки в PHP?

Возможно, я не могу сравнить значение двух строк the_title() и либо просто нормальную строку непосредственно в инструкции IF, либо одну и ту же строку из другой переменной. Этот оператор IF просто не работает. Я пробовал оба с ==, === и с strcmp(), но ничего, он просто отказывается признать, что обе строки действительно идентичны (я распечатывал их несколько раз, и они совпадают). Есть предположения?

<?php 

    $args = array('post_type' => 'team', 'showposts' => -1); 

    $items = new WP_Query($args); 

    while ($items->have_posts()) : $items->the_post(); 
     $title = the_title(); // one of the titles in the while loop is indeed "Jon Snow" 
     $comp = 'Jon Snow'; 

     if ($title === $comp){ 
      echo 'Success!'; 
     } 
    endwhile; 
    wp_reset_query(); 
?> 

О, и каждый раз, если заявление не работает, система просто выводит все the_title() значения в то время цикла.

+0

Если вы распечатали их в браузере, помните, что браузер удалит посторонние пробелы. Кроме того, вы уверены, что нет лишних пространств в существе, посередине или в конце названия? – jeff

+1

Правильная функция WP для использования в этой ситуации - get_the_title(), которая возвращает и не выполняет эхо. – topdown

ответ

1

О, и каждый раз, когда инструкция IF не работает, система просто печатает все значения the_title() в цикле while.

У вас есть ответ на свой вопрос. the_title() по умолчанию печатает заголовок сообщения. Чтобы сравнить заголовок, ваш первый должен сохранить его в переменной, а затем сравнить.

the_title() принимает 3 параметра и 3-й параметр (FALSE), чтобы получить заголовок как возвращаемое значение, а не просто его печатать. Третий параметр по умолчанию TRUE, и он печатает заголовок на странице.

Так вы можете это сделать.

<?php $posttitle=the_title('', '', FALSE); ?> 
Смежные вопросы