如何将对象转换为数组?

时间:2013-03-25 09:01:28

标签: php joomla

我需要创建Joomla数据库配置的自定义数组,所以我这样做:

$config =& JFactory::getConfig();
$db['default']['hostname'] = $config->getValue('config.host');

但是收到错误:Fatal error: Cannot use object of type JDatabaseMySQLi as array in /Sites/joomla/administrator/components/com_***** on line 217

我也尝试过这样:

die(var_dump($config->getValue('config.host')));
//string(9) "localhost"

$temp_var = $config->getValue('config.host');
die(var_dump($temp_var));
//string(9) "localhost"

3 个答案:

答案 0 :(得分:0)

在Joomla 3.0中

你可以得到这样的每个值:

$config = JFactory::getConfig();
$db['default']['hostname'] = $config->get('host');
// Show them
var_dump($config);
var_dump($config->get('host'));
var_dump($db);

答案 1 :(得分:0)

问题是$ db部分,而不是$ config。 您试图将$ db对象(可能由JFactory::getDbo()创建)威胁为数组。

如果这是你想要用于某事的自己的变量,请尝试将其重命名为其他变量,以避免与显然已存在的$ db对象发生冲突。

或者使用如下所述的JDatabase类:http://docs.joomla.org/Accessing_the_database_using_JDatabase

答案 2 :(得分:0)

您的错误消息非常清楚 - 您正在尝试使用类$db的{​​{1}}对象作为数组。如果您按如下方式创建JDatabaseMySQLi

$db

你有Joomla的数据库连接器$db = JFactory::getDBO(); // N.B. $db is already setup for the Joomla! database. (使用MySQLi adpater)!安装本地数据库(即object中的一个设置)。这不是configuration.php - 但您的代码行正在尝试将其用作array

array

注意:以上这一行是错误的

如果要使用除$db['default']['hostname'] = $config->getValue('config.host'); (例如远程数据库)中存储的凭据之外的凭据设置与数据库的连接,可以使用以下方法:

configuration.php