PHP- 如何解决嵌套foreach循环中的else
PHP- How to solve else in nested foreach loop
这是我的代码语法,所有条件都有效,但最后一个无效。我在那里 找到了解决方案,我用过 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。你只需要打破 foreachs 一次,所以它只是 break;
else 实际上不是 运行,因为 if 不是假的。如果它在 ifs 中使用 break,则根本不会 运行。只有最里面的 else 运行s,如果 $demos 的第一个 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 块,并在需要时 return 从中移出。例如:
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';
}
}
}
这是我的代码语法,所有条件都有效,但最后一个无效。我在那里 找到了解决方案,我用过 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。你只需要打破 foreachs 一次,所以它只是 break;
else 实际上不是 运行,因为 if 不是假的。如果它在 ifs 中使用 break,则根本不会 运行。只有最里面的 else 运行s,如果 $demos 的第一个 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 块,并在需要时 return 从中移出。例如:
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';
}
}
}