为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
任何暗示我做错了什么?谢谢你的快速帮助;)
答案 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"
中。