Php 如果嵌套的foreach为空,则foreach语句回显一次?
好的,我有一个foreach语句,在wordpress的3个多站点博客中搜索关键字,如下所示: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
<?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";
}