0

我正在尝试根据用户是否禁用左栏或右栏来制作条件代码。我有以下

<?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

当我将其中一个侧边栏关闭时,我做错了什么使它不会改变?

4

3 回答 3

0

因为你有:

$left_sidebar = 'off';
$right_sidebar = 'on';

并且您正在使用“OR”逻辑运算符,它将始终与第一if条语句匹配,因为$right_sidebaris 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';
}
于 2013-08-19T16:30:19.447 回答
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 手册

希望这可以帮助!

于 2013-08-19T16:31:44.453 回答
0

你的逻辑运算符是错误的,例如在这里:

else if ($left_sidebar == 'on' || $right_sidebar == 'off') {

你是说如果离开它打开或关闭它做某事,但你想要如果离开它打开 AND (&&) 正确它关闭做某事。检查此链接它可能有用

于 2013-08-19T16:33:36.397 回答