- array_filter: documentation ( source)
- array_keys: documentation ( source)
<?php
class ObjContainer { }
class Array2Obj {
public function isArrayAssociative(array $array) {
return (bool) count(array_filter(array_keys($array), 'is_string'));
}
public function __CONSTRUCT(array $array) {
if(isArrayAssociative($array)) {
$obj = new ObjContainer;
foreach($array as $key => $val) {
if(is_array($val)) {
$obj->{$key} = new Array2Obj($val);
}
else {
$obj->{$key} = $val;
}
}
return $obj;
}
else {
$array = array();
foreach($array as $val) {
if(is_array($val)) {
$array[] = new Array2Obj($val);
}
else {
$array[] = $val;
}
}
return $array;
}
}
}
$array = ["database"=>["host"=>"localhost","dbname"=>"mydb","user"=>"root","password"=>""]];
$xml = new Array2Obj($array);