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 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;
?>

Я должен иметь возможность получить значение переменной независимо от имени поставщика. Итак, с этой переменной я использую подчеркивание «_» в качестве разделителя, только первая часть динамически изменяется для каждой записи, а вторая часть, которая является моделями, является статической.

Надеюсь, я смог хорошо объяснить.


person user2107349    schedule 20.02.2014    source источник
comment
Этот код очень опасен. Вы напрямую сбрасываете данные PHP в контекст javascript. Вы ДОЛЖНЫ использовать json_encode() данные, чтобы любые метасимволы JS в тексте не вызывали синтаксических ошибок и не уничтожали блок кода JS. Что касается вашей структуры. var models['hp'] = 'D2200-VC', вероятно, послужит вам лучше.   -  person Marc B    schedule 20.02.2014
comment
так как мне преобразовать эту динамическую переменную в статическую переменную?   -  person user2107349    schedule 20.02.2014
comment
Ваше меняющееся имя всегда заканчивается на _models?   -  person SenseException    schedule 21.02.2014
comment
Правильно, изменение имени всегда заканчивается на _models и никогда не меняется, только первая часть перед подчеркиванием является динамической по своей природе.   -  person user2107349    schedule 21.02.2014
comment
Я думал, что нетрудно достичь того, что я хочу выше, но пока я не получил никаких предложений, давай, господа, дайте мне некоторые подсказки.   -  person user2107349    schedule 21.02.2014


Ответы (1)


Удалось получить желаемые результаты с помощью 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

person user2107349    schedule 22.02.2014