Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
高级PHP foreach()循环..(嵌套的if/else)_Php_Loops_Foreach_Break - Fatal编程技术网

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

高级PHP foreach()循环..(嵌套的if/else),php,loops,foreach,break,Php,Loops,Foreach,Break,我脑子里有点放屁…哈哈 我最初是使用forloop()来实现这个。。但是,在我需要检查的事情上,以及基于find/not found的输出上,条件变得更高级了 我的问题是确保在连续循环中。。(无法进入)药剂上的“其他”只能得到一次回音。。。当然,在每个“循环”中,它都会从顶部进行检查,如果不匹配,则输出“禁止访问”文本。。(每次迭代)。。它应该只输出一次 最初,foreach()循环中只有几个if()语句/检查。。一次简单的休息;处理得很好 但是这些if()变成了if/else。。这意味着els

我脑子里有点放屁…哈哈

我最初是使用forloop()来实现这个。。但是,在我需要检查的事情上,以及基于find/not found的输出上,条件变得更高级了

我的问题是确保在连续循环中。。(无法进入)药剂上的“其他”只能得到一次回音。。。当然,在每个“循环”中,它都会从顶部进行检查,如果不匹配,则输出“禁止访问”文本。。(每次迭代)。。它应该只输出一次

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

但是这些if()变成了if/else。。这意味着else将在下一个“循环”中被“触发”。。如何防止这种情况

$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和#6我们会说..实际上可以是6个视频中的任何一个)

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

5号输出嵌入代码精细(访问)

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

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

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

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

但我得到了“12”echo的

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

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

我想要达到的目标:

共6项产出

每个输出(回波)应仅具有: 可用的或不可用的打印(这是空白标题的嵌套条件检查) -或- 禁止进入

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

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

第二层条件检查: 如果是(match found==access)…则检查标题是否丢失(如果有输出访问权限[视频嵌入代码]…如果没有,则输出文本“尚未可用”)

(返回到第一个条件检查)如果没有访问权限(未找到匹配项)…输出“无访问权限”文本

如果我想在舞台/页面上复制的话,这就行了…(但我没有!)哈哈

我需要限制为只有6个输出,…因为总共只有6个视频可用

我不想:

在循环1上,它输出对视频1的访问,而#2-#6为无访问。。 在循环2上,它重新声明所有这些输出,视频1现在没有访问权限,视频2有访问权限,视频3-6没有访问权限

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


谢谢!

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

$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 />';

}
$webinars=array('one','two','Name3');
$web0_title='notempty';//只是一个演示
对于($i=0;$i;
回显“可用性:”。($available?available':“notavailable”)。
; 回显“Access:”($Access?Access':“No Access”)。“

”; }

编辑:只需阅读您的评论,我就更新了它。

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

不是
$arrwebinars=(“Name1”,“Name3”);
应该是
$arrwebinars=array(“Name1”,“Name3”);
尝试正确格式化代码。“主if/else”是什么?@KevBot-是的..是我在事后抛出的拼写错误,以提供一些上下文。msfoster-主if/else是if($webinar)部分..每个主if/else都有一个嵌套的if/else。main检查$webinar的“访问权限”..if-access,然后我检查可用性(嵌套if/else)是的,这与我正在尝试做的更接近。(我相信)我想检查第一个块(if/else)和输出“可用”(这将是视频的一些嵌入代码)..或不可用(意味着他们有访问权限,在数组中找到匹配项,但视频未就绪消息)..如果未找到匹配项..则输出无访问权限(您没有购买消息,…以及其他文本).我现在看到的是:继续…在第一个循环中找到第一个匹配/视频..并输出嵌入代码。在第二个循环中,连续块都输出无访问权限(我相信简单的中断会停止此操作?)。上面的第一个视频现在列为无访问权限,第二个视频被找到/回音..以及其他(当然)无法访问。因此,使用上述(仅3个)示例,我得到9个总回波。根据环路的不同,所有回波都不同iteration@Eliel-看起来您只是在检查访问和可用性的布尔值。但我们输出的可用性文本基于访问值,而不是val