【发布时间】:2012-01-14 16:02:18
【问题描述】:
我知道这种类型的问题被问了很多,但我还没有找到我想要的方法。
所以,基本上我有这个数组。
array(7) {
["site"]=>
array(5) {
["production"]=>
bool(false)
["url"]=>
string(29) "http://localhost/"
["name"]=>
string(6) "Sitename"
["title"]=>
string(7) ": Index"
["pagedata"]=>
array(1) {
["default"]=>
string(5) "Index"
}
}
["DB"]=>
array(5) {
["host"]=>
string(9) "localhost"
["user"]=>
string(4) "root"
["pass"]=>
string(4) "secret"
["database"]=>
string(12) "database"
["engine"]=>
string(7) "eMySQLi"
}
["cache"]=>
array(2) {
["file"]=>
array(1) {
["time"]=>
int(500)
}
["memcache"]=>
array(2) {
["my_first_vps_ip"]=>
string(17) "my_first_vps_port"
["my_second_vps_ip"]=>
string(18) "my_second_vps_port"
}
}
["skin"]=>
array(2) {
["name"]=>
string(9) "thehabbos"
["mobile"]=>
array(2) {
["enabled"]=>
bool(true)
["name"]=>
string(16) "mobile_thehabbos"
}
}
["lang"]=>
array(1) {
["name"]=>
string(7) "English"
}
["widget"]=>
array(1) {
["default"]=>
string(7) "Icecron"
}
["cron"]=>
array(1) {
["DatabaseBackup"]=>
array(1) {
["execute_every"]=>
int(86400)
}
}
}
所以,如果我用这样的方法“解析”这个数组(将数组转换为对象)..
private function parse($arr)
{
foreach ($arr as $key => $val)
{
$this->{$key} = is_array($val) ? $this->parse($val) : $val;
}
return $this;
}
我最终会得到类似......
object(Configure)#3 (27) {
["production"]=>
bool(false)
["url"]=>
string(29) "http://localhost/RevFramework"
["name"]=>
string(7) "English"
["title"]=>
string(7) ": Index"
["default"]=>
string(7) "Icecron"
["pagedata"]=>
*RECURSION*
["site"]=>
*RECURSION*
["host"]=>
string(9) "localhost"
["user"]=>
string(4) "root"
["pass"]=>
string(4) "root"
["database"]=>
string(12) "rev_database"
["engine"]=>
string(7) "eMySQLi"
["DB"]=>
*RECURSION*
["time"]=>
int(500)
["file"]=>
*RECURSION*
["my_first_vps_ip"]=>
string(17) "my_first_vps_port"
["my_second_vps_ip"]=>
string(18) "my_second_vps_port"
["memcache"]=>
*RECURSION*
["cache"]=>
*RECURSION*
["enabled"]=>
bool(true)
["mobile"]=>
*RECURSION*
["skin"]=>
*RECURSION*
["lang"]=>
*RECURSION*
["widget"]=>
*RECURSION*
["execute_every"]=>
int(86400)
["DatabaseBackup"]=>
*RECURSION*
["cron"]=>
*RECURSION*
}
所以,我可以这样使用它..
echo $this->url;
但我想做的就是这样使用它..
echo $this->site->url;
如果可能的话,我知道如何实现这一点吗?
【问题讨论】:
标签: php arrays object multidimensional-array