【发布时间】:2019-01-12 20:48:12
【问题描述】:
在一个分成 11 个值块的数组中,我需要知道一个特定的值是否为 TRUE。如果只有一个是 TRUE,这就是我所需要的,并且 foreach 可以在设置值后停止。我所能想到的就是让它在匹配时将 SESSION 值设置为 TRUE,但这并不会阻止循环继续,然后我遇到了 SESSION 给出错误结果的问题,除非它随后被取消设置,我之后做了该值已设置。似乎是一种间接的方式,所以有什么建议吗?
$FormValues = array_chunk($Fields, $NoValues); // Group together the field values
// Check if form uses multiple selection fields and add appropriate form tags
foreach ($FormValues as $multi) :
if (isset($multi[9]) === TRUE) $_SESSION['useMulti'] = TRUE;
endforeach;
$enableMulti = (isset($_SESSION['useMulti'])) ? " enctype=\"multipart/form-data\"" : "";
unset($_SESSION['useMulti']);
这是一个数组的例子,在这种情况下,没有一个应该返回 TRUE:
$Fields = array("First Name","Title",$Title,1,0,30,"","","","","",
"Quote","Quote",$Quote,4,0,30,"","",$quoteSQL,FALSE,$siteDB,
"Location","Location",$Location,1,0,30,"","","","","",
"Date","EventDate",$EventDate,41,0,15,"",TRUE,"","","",
"Time","Time",$Time,39,0,0,"","",$sqlTime,"","",
);
【问题讨论】:
-
你为什么使用这样的数组,而不是二维数组?
-
为什么需要使用会话变量而不是普通变量?
-
你不应该使用
isset()。 -
这里的其他人在另一个问题中告诉我,这是一种很好的方法,并且有效。此外,数组在每个块中可能有不同数量的元素,这使它更加灵活,这就是为什么 $NoValues 在变量中的原因。数组本身是由另一种形式生成的。无论如何,更改它有点太晚了,因为它在我的许多网站中都在使用。
-
@Barmar 如果它不存在,有什么更好的方法可以做到这一点而不会出错?如果没有它,它有时会给出密钥不存在的错误,或者至少,我希望它可能