提问者:小点点

高级PHP foreach()循环。。(嵌套的if/else)


我这里有点脑放屁。。。英雄联盟

我最初使用的是forloop(),但后来条件变得更先进,我需要检查的东西,以及基于找到/没有找到的输出。

我的问题是确保在连续循环中...(无访问)药水上的“其他人”只得到一次回声...但是当然,在每个“循环”上,它会从顶部检查,如果不匹配,则输出“无访问”文本...(上它应该只输出一次。

最初,foreach()循环中只有几个if()语句/检查。。一次简单的Rest;处理得很好。。。

但是这些if()'s变成了if/res...这意味着其他人将在下一个循环中被“触发”...如何防止这种情况?

$arrwebinars = ("Name1", "Name3");

foreach($arrwebinars as $webinar) {

   /* Webinar 1 */
   if($webinar == 'Name1') {    
        if($web01_title != '') {
            echo "available";                   
        } else {
            echo "not available";
        }
  } else {
    echo "no access";
  } 

  /* Webinar 2 */
  if ($webinar == 'Name2') {    
     if ($web02_title != '') {
        echo "available";                   
     } else {
        echo "not available";
     }
  } else {
     echo "no access";
  }

  /* Webinar 3 */
  if ($webinar == 'Name3') {    
    if($web03_title != '') {
        echo "available";                   
    } else {
        echo "not available";
    }
  } else {
    echo "no access";
  }
}

是否有其他类型的“控件”可用于确保主if/else只执行一次?

很抱歉,我很难描述这一点,希望代码能够解释这一切(以及问题)

谢谢

更新:当前状态:还原回foreach()循环。

用户仅被授权使用2个视频(#5

在第一次循环/迭代时。。vids 1-4输出(您无法访问!)(因为他们没有,只有#5

5号输出嵌入代码精(存取)

第六条说“你不能进入”。。(即使他们有/应该有访问权限)

在scond迭代中。。视频1-4是重复的,并且再次说“您无法访问”(在它之外是重复的..这是正确的)。。然而,vid#5现在说“您没有访问权限”(第一个循环输出良好,第二个循环正在寻找新的“匹配”,而不是我想要的……理论上这是正确的……但应该有一个副本)

Vid#6现在正在输出嵌入代码(在第一个循环中没有)。。

用户只购买了对2个视频的访问...所以循环只发生两次。

但我得到了“12”echo的

不管怎样,我应该只获得6个echo,每个视频输出1个(可用/不可用-或-无访问)

我今天似乎不能对这件事耿耿于怀(

我想要达到的目标:

6项产出共计

每个输出(回声)应该只有:可用或不可用打印(这是空标题的嵌套条件检查)-或-没有访问

有6个视频要检查。用户可以购买1个或最多6个视频的访问权限

第一个检查是:是否在他们购买的数组中找到了总共可用的6个视频中的网络研讨会名称

第二层条件检查:如果是(找到匹配项==access)。。。然后检查标题是否丢失(如果有输出访问[视频嵌入代码]…如果没有,则输出文本“尚未可用”)

(回到第一个条件检查)如果没有ACCESS(未找到匹配)...

如果我想在舞台上/页面上复制,这就行了。。(但我没有!)英雄联盟

我需要仅限于6个输出,...因为总共只有6个视频可用。

我不希望:

在循环1它输出访问为vid#1和#2#6是没有访问...在循环2它重新状态所有这些输出,有vid#1现在没有访问,vid#2有访问和vids#3-#6是没有访问...

等等等等。。这种循环还在继续。我在这件事上迷路了!。。

谢谢!


共2个答案

匿名用户

如果您希望在遇到“无法访问”时停止考虑该“行”,那么您可以简单地继续每次之后都不允许访问。或者,即使在第一次遇到“无法访问”的情况下,您是否希望检查其他人,在这种情况下只是默默地失败?

匿名用户

不确定你到底想要实现什么,但是你的代码可以大大缩短。

$webinars = array('one', 'two', 'Name3');
$web0_title = 'not empty'; // Just a demo

for ( $i = 0; $i < count($webinars); $i++ )
{

    $access = FALSE;
    $available = FALSE;
    $name = 'Name' . $i;
    $title = 'web' . $i . '_title';

    if ( $webinars[$i] == $name ) {

        if ( ! empty( $$title ) ) {

            $available = TRUE;

        }

        $access = TRUE;

    }

    // Simple debug, not sure what you want to accomplish
    echo 'Webinar: ' . $webinars[$i] . ' <br />';
    echo 'Availability: ' . ( $available ? 'Available' : 'Not Available' ) . '<br />';
    echo 'Access: ' . ( $access ? 'Access' : 'No Access'  ) . '<br /><br />';

}

编辑:只要阅读你的评论,我就会更新它。