PHP将动态变量名称修改为静态变量名称

时间:2014-02-20 18:06:31

标签: javascript php dynamic-variables

如果我提出错误的问题或不可能的问题,请原谅我,我是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 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"

上面注意var hp_models =“value”是一个具有动态变量名称的变量,我想将此变量转换为静态名称。原因是,如果我正在查看Dell,IBM或其他型号,则此变量名称将动态更改为供应商名称,例如“var ibm_models”,“var dell_models”,“var sony_models”等。我想将此变量名称转换为静态名称,例如somemodel或prodmodel,无论供应商如何。

所以我应该可以使用类似下面的内容。

<?php
echo $_models;
?>

无论供应商名称如何,我都应该能够获得变量的值。所以使用这个变量我使用“_”下划线作为分隔符,只有第一部分动态地为每条记录改变,第二部分是模型是静态的。

我希望我能够很好地解释。

1 个答案:

答案 0 :(得分: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