我有最艰难的时间来解决这个问题,我似乎无法找到答案。
以下是我要做的事情:我的网站上有不同的导航菜单,具体取决于部分。我已经预先构建了不同的变体,并在每个页面上声明$ linkbox_array,这是我页面上导航菜单的链接数组。在某些页面上,我水平显示,而其他页面垂直显示垂直时,我需要将免责声明添加到堆叠链接框的底部。
所以我的函数试图这样说:如果$ linkbox_array是$ general_linkboxes而$ bodyClass是“withSidebar”,那么在数组项2之后回显一个免责声明。否则,只需回显数组项。
所以这就是我写的(请原谅我,如果它很糟糕,我是新手):
function display_linkboxes($array) {
if ($linkbox_array == $general_linkboxes && $bodyClass = "withSidebar") {
foreach ($array as $linkbox) {
if ($linkbox == $array[2]) {
echo $linkbox;
global $general_disclaimer;
echo $general_disclaimer;
} else {
echo $linkbox;
}
}
} else {
foreach ($array as $linkbox) {
echo $linkbox;
}
}
}
问题在于,即使两个条件不成立,它也会继续吐出$ general_disclaimer。我试图解构函数并找出我出错的地方,并且我意识到我的if语句总是评估为true,即使我输入了jibberish。例如:
function display_linkboxes($array) {
if ($linkbox_array == $askjfdalfjk) {
foreach ($array as $linkbox) {
echo $linkbox;
}
}
}
即使$ askjfdalfjk不存在,此计算结果为true并显示链接。然后我遇到了相反的问题。即使if语句的计算结果为true,也不会显示链接:
function display_linkboxes($array) {
if ($bodyClass == "withSidebar") {
foreach ($array as $linkbox) {
echo $linkbox;
}
}
}
世界上我做错了什么?!?!非常感谢任何帮助!
答案 0 :(得分:0)
在您的代码中:
function display_linkboxes($array) {
if ($linkbox_array == $general_linkboxes && $bodyClass = "withSidebar") {
...
$ linkbox_array,$ general_linkboxes和$ bodyClass不在此函数的范围内,这意味着它们彼此相等,因为它们都不存在。您需要将它们作为变量传递给函数(推荐),或者将代码更改为以下内容:
function display_linkboxes($array) {
global $linkbox_array, $general_linkboxes, $bodyClass;
if ($linkbox_array == $general_linkboxes && $bodyClass == "withSidebar") {
...
我已编辑此答案以包含= - > ==修复$ bodyClass
答案 1 :(得分:0)
你的if条件只需要一些重构:
if(($linkbox_array == $general_linkboxes) && ($bodyClass == "withSidebar")) {}
单个'='是一个赋值操作,总是评估为true。
A ==是您正在寻找的条件等于操作。
此外,如果您正在检查数组相等性和顺序问题,那么您应该使用'==='运算符,该运算符不仅检查相同的元素,还检查相同的顺序
最后你有一个范围问题 - 如果你的链接盒数组的评估等于一个null变量,那么它还没有被定义。您可以使用print_r()操作来检查这一点。如果数组是在函数外定义的,那么你应该将它作为参数传递给函数。
答案 2 :(得分:0)
可能你在你的功能之外设置$linkbox_array
,那么你的功能不知道它,除非你...
function display_linkboxes($array) {
global $linkbox_array; // <------ now the variable exists within the function.
if ($linkbox_array == $askjfdalfjk) {
foreach ($array as $linkbox) {
echo $linkbox;
}
}
}
与$bodyClass