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