0

如果我问了一个错误的问题或不可能的问题,请原谅,我是 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;
?>

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

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

4

1 回答 1

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

于 2014-02-22T00:30:46.773 回答