我遇到这个问题,因为它的名字得到一个变量。我正在做的是包括一个连接路径,我希望连接以某种方式命名。我想迭代这些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
那么如何动态读取这些变量?
答案 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)
以不同的方式构建您的数据。您想要通过共享相似名称的变量组进行迭代..但是,您没有想到使用数组作为配置选项并迭代通过它?