2014-02-20 258 views
0

請原諒,如果我問的是錯誤的問題或不可能的問題,我是PHP的新手。我有以下PHP代碼PHP將動態變量名稱修改爲靜態變量名稱

<?php 
    if ($this->arrCustomFields) { 
     foreach ($this->arrCustomFields as $field) { 

      if($field['blnView']) { 
       echo 'var '.preg_replace('/\s+/', '_', strtolower($field['lbl']->Name)).' = "'.$field['lbl']->Text.'";'; 
      } 

     } 

    } 
?> 

此代碼生成以下變量,我在同一頁上的JavaScript中使用。

上述VAR hp_models
var optic_drive = "No CD/DVD Media Installed"; 
var power_supply = "No PSU"; 
var ram = "2 GB"; 
var web_cam = "No"; 
var processor = "No Processor Installed"; 
var tested_by = "FM"; 
var psu = "None"; 
var data_storage = "Not Installed"; 
var grade = "B"; 
var serial_no = "24234234"; 
var hp_models = "D2200-VC" 

通知=「值」是一個具有動態變量名的變量,我想這個變量轉換爲靜態名稱。原因是,如果我正在查看Dell,IBM或其他型號,則此變量名稱將動態更改爲供應商名稱,例如「var ibm_models」,「var dell_models」,「var sony_models」等。我想將這個變量名稱轉換爲靜態名稱,比如somemodel或prodmodel,而不管供應商。

所以我應該能夠使用它像下面的東西。

<?php 
echo $_models; 
?> 

無論供應商名稱如何,我都應該能夠獲取變量的值。因此,對於這個變量,我使用「_」作爲分隔符下劃線,只有第一部分動態地爲每條記錄改變,第二部分是模型是靜態的。

我希望我能解釋得很好。

+3

此代碼是非常危險的。您直接將PHP數據轉儲到JavaScript上下文中。您**必須** json_encode()數據以防止文本中的任何JS元字符造成語法錯誤並殺死您的JS代碼塊。至於你的結構。 'var models ['hp'] ='D2200-VC''可能會爲您提供更好的服務。 –

+0

那麼如何將此動態變量轉換爲靜態變量? – user2107349

+0

你的名字總是以「_models」結尾? – SenseException

回答

0

通過使用preg_replace來管理獲得期望的結果。

<?php 
    if ($this->arrCustomFields) { 
     foreach ($this->arrCustomFields as $field) { 

      if($field['blnView']) { 
$field['lbl']->Name = preg_replace("/.*Models/", "mymodels", $field['lbl']->Name); 
       echo 'var '.preg_replace('/\s+/', '_', strtolower($field['lbl']->Name)).' = "'.$field['lbl']->Text.'";'; 
      } 

     } 

    } 
?> 

由於https://stackoverflow.com/users/2284641/johannes-h