codeigniter中if语句的语法错误?

时间:2013-10-24 18:00:36

标签: php mysql codeigniter

为ADMINS编辑:由于问题的起源不同,这不是一个已经问过的问题!!!

我正在尝试显示所选的当前语言,该语言保存在会话表中。 我先做的是简单的声明:

<?php echo $this->session->userdata("language"); ?>

效果很好。这里的问题是,语言以英文和小写保存到会话表中,意思是:“英语”,“德语”,“西班牙语”等等

然后我尝试使用if语句解决此问题,如下所示:

<?php if ($this->session->userdata("language") = spanish) {  echo 'Español'; } else if ($this->session->userdata("language") = english) {  echo 'English'; } else echo 'Deutsch'; ?>

不幸的是,这会返回:

  

致命错误:无法在写入上下文中使用方法返回值   第270行/home/.../.../.../app/views/header.php

任何暗示我做错了什么?谢谢你的快速帮助;)

4 个答案:

答案 0 :(得分:2)

您需要使用比较运算符==(我确定您的=只是通常的常见错字),因为您无法分配值( write )到$this->session->userdata('anything')方法返回),即

  

无法在写上下文中使用方法返回值

 <?php if ($this->session->userdata("language") == 'spanish') {  
          echo 'Español'; 
        } 
       elseif($this->session->userdata("language") == 'english') { 
          echo 'English'; 
      } 
      else echo 'Deutsch'; 
    ?>

答案 1 :(得分:1)

==运算符和带引号的字符串应该解决它:

<?php 
if ($this->session->userdata("language") == 'spanish') {  echo 'Español'; } 
else if ($this->session->userdata("language") == 'english') {  echo 'English'; } 
else echo 'Deutsch'; 
?>

答案 2 :(得分:0)

使用 SWITCH 声明来实现此目标[代码看起来真的很可读]

<?php 

$language=$this->session->userdata("language");

switch($language)
{
    case "spanish":
        echo 'Español';
        break;

    case "english":
        echo 'English';
        break;

    //.... goes on



}

答案 3 :(得分:0)

要比较您应该使用==运算符的两件事。字符串值也应包含在引号"myStringValue"中。