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" は、動的変数名を持つ変数の 1 つであり、この変数を静的名に変換したいと考えています。その理由は、Dell、IBM、またはその他のモデルを表示している場合、この変数名が動的にベンダー名 (「var ibm_models」、「var dell_models」、「var sony_models」など) に変わるためです。ベンダーに関係なく、この変数名を somemodel や prodmodel などの静的な名前に変換したいと考えています。

だから私はそれを次のようなものに使うことができるはずです。

<?php
echo $_models;
?>

ベンダー名に関係なく、変数の値を取得できるはずです。したがって、この変数では、「_」アンダースコアをセパレーターとして使用しています。最初の部分のみが各レコードで動的に変化し、モデルである 2 番目の部分は静的です。

うまく説明できてよかったです。

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 に答える