我正在尝试使条件代码依赖于用户是否禁用了左侧或右侧栏。我有以下
<?php
$left_sidebar = 'off';
$right_sidebar = 'on';
if ($left_sidebar == 'on' || $right_sidebar == 'on') {
$left_sidebar_width = 'four_columns';
$right_sidebar_width = 'four_columns';
$center_width = 'eight_columns';
} else if ($left_sidebar == 'on' || $right_sidebar == 'off') {
$left_sidebar_width = 'four_columns';
$right_sidebar_width = 'disabled';
$center_width = 'twelve_columns';
} else if ($left_sidebar == 'off' || $right_sidebar == 'on') {
$left_sidebar_width = 'disabled';
$right_sidebar_width = 'four_columns';
$center_width = 'twelve_columns';
} else {
$left_sidebar_width = 'disabled';
$right_sidebar_width = 'disabled';
$center_width = 'sixteen_columns';
}
echo $left_sidebar_width;
echo '<br />';
echo $right_sidebar_width;
echo '<br />';
echo $center_width;
echo '<br />';
?>
我遇到的问题是无论我更改$ left_sidebar或$ right_sidebar,它总是说
four_columns
four_columns
eight_columns
当我将其中一个侧边栏关闭时,我做错了什么使它不会改变?
答案 0 :(得分:0)
因为你有:
$left_sidebar = 'off';
$right_sidebar = 'on';
并且您正在使用“OR”逻辑运算符,它将始终与第一个if
语句匹配,因为$right_sidebar
为on
。将“OR”||
运算符更改为“AND”&&
,您应该得到预期的结果。
if ($left_sidebar == 'on' && $right_sidebar == 'on') {
$left_sidebar_width = 'four_columns';
$right_sidebar_width = 'four_columns';
$center_width = 'eight_columns';
} else if ($left_sidebar == 'on' && $right_sidebar == 'off') {
$left_sidebar_width = 'four_columns';
$right_sidebar_width = 'disabled';
$center_width = 'twelve_columns';
} else if ($left_sidebar == 'off' && $right_sidebar == 'on') {
$left_sidebar_width = 'disabled';
$right_sidebar_width = 'four_columns';
$center_width = 'twelve_columns';
} else {
$left_sidebar_width = 'disabled';
$right_sidebar_width = 'disabled';
$center_width = 'sixteen_columns';
}
答案 1 :(得分:0)
如果一个条件为真,则您的条件语句当前评估为TRUE
。您需要做的是检查两者条件是否为真。因此,您需要&&
而不是||
。
<强>解释强>
您可以使用var_dump()
检查条件语句的结果:
var_dump(($left_sidebar == 'on' || $right_sidebar == 'on'));
var_dump(($left_sidebar == 'on' || $right_sidebar == 'off'));
var_dump(($left_sidebar == 'on' || $right_sidebar == 'on'));
以上代码输出:
bool(true)
bool(false)
bool(true)
将其更改为:
var_dump(($left_sidebar == 'on' && $right_sidebar == 'on'));
var_dump(($left_sidebar == 'on' && $right_sidebar == 'off'));
var_dump(($left_sidebar == 'on' && $right_sidebar == 'on'));
产生输出:
bool(false)
bool(false)
bool(false)
有关详细信息,请参阅PHP Manual。
希望这有帮助!
答案 2 :(得分:0)
你的逻辑运算符错了,例如在这里:
else if ($left_sidebar == 'on' || $right_sidebar == 'off') {
你要说的是,如果离开它或者离开它做了什么,但你想要把它放在AND(&amp;&amp;)右边它做了什么。检查此link它可能有用