簡體   English   中英

如果嵌套的foreach為空,則foreach語句回顯一次?

[英]foreach statement echo once if nested foreach is empty?

好的,我有一個foreach語句,在wordpress中跨3個多站點博客搜索關鍵字,如下所示:

<?php
 foreach ( $blogs as $blog ):
 switch_to_blog($blog['blog_id']);
 $search = new WP_Query($query_string);  
                     if ($search->found_posts>0) {
                            foreach ( $search->posts as $post ) {
echo "POST CONTEN";
                            }
                    }elseif ($search->found_posts===0) {
                        # code...
                        $notfound = true;
                    }
        endforeach;
if ($notfound) {
    # code...
    echo "POST NOT FOUND";
}

如果在所有博客中都沒有使用該關鍵字的帖子,則此方法很好,但它回顯了POST NOT FOUND,但是如果博客1中存在一個帖子,而博客2或3中卻沒有,則仍然回顯POST NOT FOUND為什么? 克里斯// * ** * **** 更新 * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * **** /

<?php
 $searchfor = get_search_query(); // Get the search query for display in a headline
 $query_string=esc_attr($query_string); // Escaping search queries to eliminate potential MySQL-injections
 $blogs = get_blog_list( 0,'all' );
 $notfound = true;
 foreach ( $blogs as $blog ):
 switch_to_blog($blog['blog_id']);
 $search = new WP_Query($query_string);  
                     if ($search->found_posts>0) {
                         $notfound = false;
                    }
                    if($notfound){
                        ?>
                        <div class="post">
                                <h2><?php _e('Ingen resultater'); ?></h2>
                                <p><?php _e('Beklager, vi fant ingen innlegg som samsvarer med ditt søk: ' . get_search_query()); ?></p>
                            </div>
                        <?php
                    }else{
                         foreach ( $search->posts as $post ) {
echo "content";
                            }
                    }
        endforeach;

        ?>

您的邏輯是倒退。 您應該以“沒有發現”條件開始,並在發現某些情況時將其更改為false:

$not_found = true;

while ...
   if ($search->found_posts != 0) {
     $not_found = false;
   }
}
if ($not_found) {
  echo 'nothing found'; // $not_found is true
} else {
  echo 'found something'; // $not_found is false
}

抱歉,格式化。 剛剛在這里復制了代碼。 與您所做的相反,請查看此處的變量$ found。

<?php
 $found = false;
 foreach ( $blogs as $blog ):
 switch_to_blog($blog['blog_id']);
 $search = new WP_Query($query_string);  
                     if ($search->found_posts>0) {
                            foreach ( $search->posts as $post ) {
echo "POST CONTEN";
                            }
                      $found = true;
                    }elseif ($search->found_posts===0) {
                        # code...
                    }
        endforeach;
if ($found == false) {
    # code...
    echo "POST NOT FOUND";
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM