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