2015-10-06 65 views
-6
傳遞數組財產

其實我想改變當前主題的顏色......這是我的CSS代碼:如何從方法使用PHP

.active{ 
    color: red; 
    border-left: 1px solid red; 
} 

而且,這裏是我的PHP類:

class Languages 
{ 
    public $active; 
    public $data = '<div class="menu"> 
         <ul> 
          <li $active["en"]>English</li> 
          <li $active["fr"]>French</li> 
         </ul> 
        </div>'; 

    function English() 
    { 
     // other codes 
     $this->active["en"] = 'active'; 
     return $active; 
    } 

    function French() 
    { 
     // other codes 
     $this->active["fr"] = 'active'; 
     return $active; 
    } 

} 

但上面的代碼不起作用,爲什麼?!我該如何解決它?

+0

'$ active [「en」]'實際上是一個字符串。使用佔位符,然後用相應的值替換它們。 – Rizier123

回答

1

有你的代碼的幾個問題。首先,使用單引號(')指示PHP不插值。其次,我懷疑你的data值永遠不會實際更新,因爲$active中的值發生了變化。此外,您應該使用class =「active」,而不是簡單地將「active」單詞添加到您的li元素中。一個更有效的解決方案可能是類似以下內容

class Languages 
{ 
    public $active; 

    function English() 
    { 
     // other codes 
     $this->active["en"] = 'active'; 
     return $active; 
    } 

    function French() 
    { 
     // other codes 
     $this->active["fr"] = 'active'; 
     return $active; 
    } 

    function data() 
    { 
     return = '<div class="menu"> 
         <ul> 
          <li class="' . $this->active["en"] . '">English</li> 
          <li class="' . $this->active["fr"] . '">French</li> 
         </ul> 
         </div>'; 
    } 

} 

然後你就可以通過調用$object->data()方法和生成的HTML將始終反映在$active當前值訪問生成的HTML。或者,您仍然可以將$data作爲成員變量存儲,並且只需使用新值(例如function updateData())重新生成它即可。

+1

你忘了更改'$ active [「en」]''類屬性:) – Rizier123

+0

感謝您的接收,哈哈!我改進了我的答案。 – CollinD

+2

@Sajad他在做什麼錯?不勝感激他幫助別人修復他們的解決方案,反過來幫助你。 – Script47

2

你在做什麼是不正確的。你的代碼沒有將變量值添加到字符串中,而是將代碼視爲文本。

public $data = '<div class="menu"> 
        <ul> 
         <li ' . $this->$active["en"] .'>English</li> 
         <li ' . $this->$active["fr"] .'>French</li> 
        </ul> 
       </div>'; 

編輯1

您還缺少ID或類屬性。

編輯2

正如這個答案的評論稱,你會得到錯誤的變量尚未初始化,將文本添加到您$data設置在__construct方法的主動變後。

編輯3

試試這個,

<?php 
    class Languages 
    { 
     public $active = []; 
     public $data; 

     function __construct() { 
      /** This will run first before anything else. **/ 

      $this->active["someKey"] = "someValue"; 
      $this->data = '<div class="menu"> 
          <ul> 
           <li class=' . $this->$active["en"] . '>English</li> 
           <li class=' . $this->$active["fr"] . '>French</li> 
          </ul> 
         </div>'; 
     } 

     function English() 
     { 
      // other codes 
      $this->active["en"] = 'active'; 
      return $active; 
     } 

     function French() 
     { 
      // other codes 
      $this->active["fr"] = 'active'; 
      return $active; 
     } 

    } 
    ?> 
+0

點1仍然存在。您使用局部變量而不是類屬性。那也不會被定義。 – Rizier123

+0

@ Rizier123我剛剛看到你的意思。謝謝您的幫助。更新。 – Script47

+0

謝謝,+1對你有幫助。 – Shafizadeh