2013-10-24 77 views
-1

編輯爲ADMINS:它不是問題一樣問題,因爲問題的原因是不同的!codeigniter中if語句的語法錯誤?

我想顯示所選的當前語言,它保存在會話表中。 我做的第一件事是簡單的聲明:

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

不幸的是,這將返回:

Fatal error: Can't use method return value in write context in /home/.../.../.../app/views/header.php on line 270

任何暗示什麼,我做錯了什麼?感謝您的快速幫助;)

+1

我想你的意思是使用'==' –

+1

@MikeB謝謝,但這不是同一個問題。這裏是由缺少的==引起的,在你引用的問題中並非如此。無論如何,謝謝:) – Ben

回答

2

您需要使用比較運算符==(我確保您的=只是平時常見錯字),因爲你不能一個值()分配給$this->session->userdata('anything')方法的返回),即

Can't use method return value in write context

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

argh ...它總是當有人問你「快速」代碼的東西大聲笑相同非常感謝,很大的幫助! – Ben

0

製作使用SWITCH語句來實現這一目標[代碼真的會看可讀]

<?php 

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

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

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

    //.... goes on 



} 
1

==運營商和引用字符串應該解決這個問題:

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

要比較兩件事情你應該使用==操作。字符串值也應該包含在引號"myStringValue"中。