2014-02-20 211 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