PHP按名称和连接获取变量

时间:2011-09-30 13:44:32

标签: php variables

我遇到这个问题,因为它的名字得到一个变量。我正在做的是包括一个连接路径,我希望连接以某种方式命名。我想迭代这些conenctions并将它们添加到队列但问题是,我不能使用'。'连接一个变量。

代码看起来像这样。配置文件:

//Set the host the databse will connect too
    $config_db_hostname='xxx.xxx.xxx';
    //Set the user who is connecting to the database
    $config_db_user='a user';
    //Set the password for user who is connecting to the database
    $config_db_pass='abc123';
    //Set the database type
    $config_db_type='mysql';
    //Set the name of the database
    $config_db_name='phonephare_development';
    //Optional: Set the schema, if any
    $config_db_schema='';
    //Optional: Set the port, otherwise default port will be used
    $config_db_port='';
    //Set the prefix for the table names
    $config_db_prefix='pf_';

    //Set the host the databse will connect too
    $config_db_hostname_1='localhost';
    //Set the user who is connecting to the database
    $config_db_user_1='test';
    //Set the password for user who is connecting to the database
    $config_db_pass_1='test';
    //Set the database type
    $config_db_type_1='mysql';
    //Set the name of the database
    $config_db_name_1='test_development';
    //Optional: Set the schema, if any
    $config_db_schema_1='';
    //Optional: Set the port, otherwise default port will be used
    $config_db_port_1='';
    //Set the prefix for the table names
    $config_db_prefix_1='pv_';

获取值的功能:

public static function init(){
        if(file_exists(PV_DB_CONFIG)){
            include(PV_DB_CONFIG);


            for ($i = 0; $i <= 3; $i++) {
                if($i){
                    $profile_id='_'.$i;
                } else {
                    $profile_id='';
                }
                // Database variables
                self::$connections['connection'.$profile_id]['dbhost'] = ($config_db_hostname.$profile_id);
                self::$connections['connection'.$profile_id]['dbuser'] = $config_db_user.$profile_id;
                self::$connections['connection'.$profile_id]['dbpass'] = $config_db_pass.$profile_id;
                self::$connections['connection'.$profile_id]['dbtype'] = $config_db_type.$profile_id;
                self::$connections['connection'.$profile_id]['dbname'] = $config_db_name.$profile_id;
                self::$connections['connection'.$profile_id]['dbport'] = $config_db_port.$profile_id;
                self::$connections['connection_'.$profile_id]['dbschema'] = $config_db_schema.$profile_id;
                self::$connections['connection_'.$profile_id]['dbprefix'] = $config_db_prefix.$profile_id;
            }

        }

}//end init

那么如何动态读取这些变量?

3 个答案:

答案 0 :(得分:4)

您可以阅读“动态”变量,如下所示:

$varname = 'config_db_user';
if ($i)
  $varname .= '_' . $i;

$varvalue = $$varname; // $varvalue contains the value now.

但这会使您的代码难以阅读且难以维护。而是使你的配置像这样:

$profiles[1]['config_db_user'] = 'whatever';

然后,你可以阅读$profiles[$profile_id]['configfield]来获得你想要的东西。可能还有其他方法可能更好,但是停止将动态变量名称放在一起,因为这是最糟糕的。

答案 1 :(得分:2)

检查PHP variable variables

注意:这是一个错误的配置文件格式,你真的应该将单独的连接放到不同的数组。检查phpmyadmin的配置文件。

答案 2 :(得分:1)

以不同的方式构建您的数据。您想要通过共享相似名称的变量组进行迭代..但是,您没有想到使用数组作为配置选项并迭代通过它?