Эхо-сообщение, если результатов поиска нетq

#php #search #echo

#php #Поиск #эхо

Вопрос:

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

Каков наилучший способ для меня проверить, нет ли результатов??

Код:

     <?php if(isset($search_results)) {foreach($search_results as $result): ?>

<?php  if(empty($search_results)) {echo 'No results';}
    else {
    echo '<div class="search_result"> <b>'.$result['title'].'</b><br />';
   echo '<span class="search_result_url">'.$result['link'].'</span><br />';
   echo $result['text'].'<br /></div>';
    } ?>

    <?php endforeach; } else {echo '<b>Please type what you are looking for into the search bar and press 'enter'</b>';}?>
 

Ответ №1:

Вам нужно проверить, является ли ваш массив $search_results пустым перед циклом foreach

  <?php 
if( isset($search_results) ) {
    if( empty($search_results) ) {
        echo 'No results';
    } else {
        foreach($search_results as $result) {
            echo '<div class="search_result"> <b>'.$result['title'].'</b><br />';
            echo '<span class="search_result_url">'.$result['link'].'</span><br />';
            echo $result['text'].'<br /></div>';
         }
    } 
} else {
    echo '<b>Please type what you are looking for into the search bar and press 'enter'</b>';
}
?>
 

Ответ №2:

ваш скрипт не может работать, поскольку цикл foreach выполняется, как только $search_results НЕ является пустым, поэтому if(empty($search_results)) {echo ‘No results’;} никогда не является истинным.

попробуйте if(пустой($result)) {echo ‘Нет результатов’;}

или если($result!=’$empty’) {echo ‘Нет результатов’;} ($empty в зависимости от того, что означает «пустой»)

Комментарии:

1. empty() является стандартной функцией PHP.

2. да, но в постере не указано, в каком смысле результат является «пустым». он также может включать html-теги, такие как «<div> </div>». в этих обстоятельствах empty() вернет FALSE . но я думаю, я должен уточнить это подробнее в своем ответе..