-1

管理员编辑:这与已经提出的问题不同,因为问题的起源不同!!!

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

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

效果很好。这里的问题是,语言以英文和小写形式保存到会话表中,意思是:“english”、“german”、“spanish”等

然后,我尝试使用 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

4 回答 4

2

您需要使用比较运算符==(我确定您=只是常见的错字),因为您不能为(方法 return )分配值( 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'; 
    ?>
于 2013-10-24T18:04:56.820 回答
1

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

<?php 
if ($this->session->userdata("language") == 'spanish') {  echo 'Español'; } 
else if ($this->session->userdata("language") == 'english') {  echo 'English'; } 
else echo 'Deutsch'; 
?>
于 2013-10-24T18:05:19.837 回答
0

使用SWITCH语句来实现这一点[代码看起来真的很可读]

<?php 

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

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

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

    //.... goes on



}
于 2013-10-24T18:03:55.483 回答
0

要比较两件事,您应该使用==Operator。字符串值也应该用引号括起来"myStringValue"

于 2013-10-24T18:06:23.997 回答