0

eval()そのような場合、通常のphpコードだけで関数を使用しないことは可能ですか?

私の評価コードは次のとおりです。

eval('$'.$var.'["'.$key.'"]="'.$value.'";');

そして、私がやっていることは次のとおりです。

function config_update($array, $var="result")
{ 
    global $result, $dbi;

    while (list($key,$value)=each($array))
    {
        if (is_array($value))
        { 
            config_update($value, $var.'["'.$key.'"]'); 
        } 
        else
        { 
            for ($i=0; $i<count($value);$i++)
            {
                if ($value == "{FROM_DB}")
                {
                    $query = $dbi->prepare("SELECT `value` FROM `".PRE."config` WHERE `key`=?;")->execute($key)->results();

                    if (!$query) 
                    {
                        trigger_error("There is no such key as `{$key}` in config database",E_USER_ERROR);
                        exit;
                    }
                    else
                        $value = str_replace("{FROM_DB}",$query[0]['value'],$value);
                }
                eval('$'.$var.'["'.$key.'"]="'.$value.'";');
                //$$var[$key] = $value; #smth like that..
            }
        }
    }
}

基本的に、変数値を {FROM_DB} で DB からの値で更新する必要があります。

4

2 に答える 2

2

可変変数に関するphpマニュアルから、不明な動作を避けるために、配列ベースの変数変数を操作する場合は {} を使用する必要があります。

${$var}[$key] = $value

可変変数を参照してください

于 2013-01-20T23:41:24.997 に答える
1

使用する場合:

$$var = array();
$$var[$key] = $value;

次のように評価されます。

$result[$key] = $value;

と仮定し$var = 'result'ます。

于 2013-01-20T23:37:12.823 に答える