【问题标题】:Change Stylesheet via If in php通过 If 在 php 中更改样式表
【发布时间】:2010-04-27 13:46:49
【问题描述】:

目前我正在尝试使用通过 if 获得的样式表。但它什么也没做。

这是我目前的代码。变量 $stylesheet 将是可变的,但在测试时我已将其设置为正常

<?php
$stylesheet = 'normal'
if ($stylesheet = 'small')
    {
    $style = './sitestyle/stylesheetsmall.css';
    }

if ($stylesheet = 'big')
    {
    $style = './sitestyle/stylesheetbig.css';
    }
  else
    {
    $style = './sitestyle/stylesheet.css';
    }

echo '<link rel="stylesheet" type="text/css" href="$style">';
?>

感谢您的回答。

【问题讨论】:

  • 第二个 if 必须是 elseif,否则 'small' 将永远无法工作,因为它将被第二个 if 块中的 else 覆盖

标签: php css variables stylesheet if-statement


【解决方案1】:

好的,正如其他人所说,= 是分配,== 是比较。

但您的问题可以通过使用switch 语句来简化:

$stylesheet =  'normal';
switch($stylesheet) {
    case 'small':
        $style = './sitestyle/stylesheetsmall.css';
        break;
    case 'big':
        $style = './sitestyle/stylesheetbig.css';
        break;
    default:
        $style = './sitestyle/stylesheet.css';
        break;
}
echo '<link rel="stylesheet" type="text/css" href="'.$style.'">';

【讨论】:

  • +1 表示开关,但 $style 永远不会出现在输出中,因为您在回显的字符串周围使用单引号
  • 谢谢你。使用 scott 的 echo 输出,它可以完美运行:)
  • 公平地说,我只是复制并粘贴了作者的代码,但你是对的,$style 需要转义。
【解决方案2】:

比较事物时,请使用== 而不是=

$a=0; 如果($a = 1){ 回声“1”; } 别的 { 回声“不是1”; }

if( $a = 1 ) 将使用$a=1 的返回值作为条件,在这种情况下返回值为$a,等于1

【讨论】:

  • 继续...如果您使用= 进行比较,它将始终评估为true,因为您正在测试分配是否成功。实际上,如果你尝试了类似if ('test' = $test)... 的东西,它可能会评估为false,因为你不能分配给常量。
  • ... 有时使用=== 会更好。 php.net/manual/en/language.operators.comparison.php
  • 我已经忘记了===!好的,谁想定义一个==== 运算符?你永远不会有太多的='s! :P
  • @FrustratedWithFormsDesigner:“它将始终评估为真,因为您正在测试以查看分配是否成功。”。您不是在测试分配是否成功,而是在测试分配的值。 ($a = $b) === $b; ($a = $b) == true 仅当 $b 恰好转换为 bool true
【解决方案3】:

其他人指出了您的 if 语句的问题。您的 echo 语句也有问题。变量不会在单引号内查看。您需要将变量移出引号并连接,或更改为双引号并转义所有其他双引号。我更喜欢第一种方法:

echo '<link rel="stylesheet" type="text/css" href="' . $style . '">';

【讨论】:

    【解决方案4】:

    您使用 PHP 的 assignment operator 而不是 equals operator 进行比较:

    if ($stylesheet = 'big')
    

    该代码实际上将值 'big' 分配给 $stylesheet,然后分配的结果由 if 评估为布尔值(这在 PHP 中是正确的)。

    您需要将= 更改为==,以便将表达式直接作为布尔值计算,而不是计算赋值的结果:

    if ($stylesheet == 'big')
    

    【讨论】:

      【解决方案5】:

      你可以用 switch 来做这个

      开关($大小){ 案例“小”: # 小CSS代码... 休息; 案例“大”: # 大 CSS 代码... 休息; 默认: # 默认样式表代码... 休息; }

      【讨论】:

        【解决方案6】:
        $stylesheet =  'normal'
        if($stylesheet == 'small')
        {
        $style = './sitestyle/stylesheetsmall.css';
        }
        if($stylesheet == 'big')
        {
        $style = "./sitestyle/stylesheetbig.css";
        }
        else
        {
                $style = "./sitestyle/stylesheet.css";
        }
        
        echo '<link rel="stylesheet" type="text/css" href="' . $style . '">';
        

        one equals 用于在 php 中分配事物 == 用于是否等于,=== 用于是否完全等于

        【讨论】:

          【解决方案7】:

          如果要检查一个值是否等于另一个值,请使用双等号==

          $stylesheet == '小'

          【讨论】:

            【解决方案8】:

            您也可以完全放弃开关/如果。

            <link rel="stylesheet" type="text/css" href="./sitestyle/stylesheet<?echo $style;?>.css">
            

            只需确保 $style 仅设置为 """big""small"

            【讨论】:

              猜你喜欢
              • 2020-01-25
              • 2018-04-17
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2020-03-18
              • 1970-01-01
              相关资源
              最近更新 更多