Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如果嵌套的foreach为空,则foreach语句回显一次?_Php_Wordpress_Foreach - Fatal编程技术网

Php 如果嵌套的foreach为空,则foreach语句回显一次?

Php 如果嵌套的foreach为空,则foreach语句回显一次?,php,wordpress,foreach,Php,Wordpress,Foreach,好的,我有一个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) { f

好的,我有一个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";
}


您的逻辑是反向的。您应该从“nothing found”条件开始,并在找到某个内容时将其更改为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
}

很抱歉格式化。刚刚在这里复制了你的代码。与您的操作相反,查看此处的变量$

<?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";
}

好的,是这样的,我的问题是,我需要在第一个foreach中使用if-else,当我这样做时,每个blog都没有找到echos 3次,它没有找到任何内容……在这种情况下,
foreach($blogs…{if($found)echo“在$blog中找到了一些内容”}否则{echo“在$blog中找不到任何内容”}
-键入东西可以做trickI编辑了我的代码这是我认为我正在做的,但它仍然没有找到三次而不是一次..修复了它我在循环外添加了另一个if($notfound)来只回显一次
<?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";
}