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的原因