PHP-如何解决嵌套foreach循环中的else
这是我的代码语法,所有条件都有效,但最后一个条件无效。我在那里找到了解决方案,我被使用了PHP-如何解决嵌套foreach循环中的else,php,debugging,if-statement,nested-loops,Php,Debugging,If Statement,Nested Loops,这是我的代码语法,所有条件都有效,但最后一个条件无效。我在那里找到了解决方案,我被使用了break 2,但仍然无法工作。我怎样才能解决这个问题 <?php $rows = $wpdb->get_results( "SELECT * FROM test WHERE approve_status = '1'" ); if($rowcount>0) { foreach ($rows as $row) { if ( is_user_logged_in
break 2
,但仍然无法工作。我怎样才能解决这个问题
<?php
$rows = $wpdb->get_results( "SELECT * FROM test WHERE approve_status = '1'" );
if($rowcount>0)
{
foreach ($rows as $row)
{
if ( is_user_logged_in() )
{
echo 'I am user';
$demo = $wpdb->get_results("SELECT * FROM abc WHERE user_mail = '$curentmail'");
foreach($demo as $demos)
{
if(!empty($demos->id)){
echo 'I am IF';
break 2;
}
else{
echo 'I am last ELSE';
}
}
}
else{
echo 'I am guest user';
}
}
}
因为如果是,中断不会中断。你只需要打断一次前额,所以它就是打断
否则实际上不会运行,因为if不是false。如果它在ifs中使用break,那么else根本不会运行。仅当$demos的第一个id为空时,最内层的其他id才会运行。第二个选项仅在用户未登录时使用。这些与foreach循环没有太多关系。如果您在错误的位置执行了else,那么应该执行它,而不是foreach循环
$demo = $wpdb->get_results("SELECT * FROM abc WHERE user_mail = '$curentmail'");
if(!empty($demo)){
foreach($demo as $demos)
{
echo 'I am IF';
}
}
else{
echo 'I am last ELSE';
}
因此,逻辑是,如果没有返回任何记录,则显示消息。在函数中移动整个foreach块,并在需要时从中返回。例如:
if($rowcount>0)
{
doStuff($rows);
}
function doStuff($rows) {
global $wpdb, $curentmail;
foreach ($rows as $row)
{
if ( is_user_logged_in() )
{
echo 'I am user';
$demo = $wpdb->get_results("SELECT * FROM abc WHERE user_mail = '$curentmail'");
foreach($demo as $demos)
{
if(!empty($demos->id)){
echo 'I am IF';
return;
}
else{
echo 'I am last ELSE';
}
}
}
else{
echo 'I am guest user';
}
}
}
检查此函数是什么\u user\u logged\u in()
在来宾用户使用exit或die而不是break时返回。我认为这很好。他可能正在调试他的代码,并试图打破外部循环,这就是为什么那里有一个break 2
。可能is\u user\u logged\u in()
不会返回false,这就是if条件始终为true的原因