Преобразование массива в определенный пользователем объект в переполнении стека

У меня есть массив, как показано ниже —

$xml= array(
'name'=> 'Arun',
'roll' => '12345',
'id' => '1'
);

Я хочу, чтобы это было преобразовано в определяемый пользователем объект [Не stdClass, ни SimpleXMLObject]

Я хочу что-то вроде ниже —

UserDefinedObject Object
(
[name] => Arun
[roll] => 12345
[id] => 1
)

Я сделал что-то вроде Белу, что дает мне stdClass Object, но мне нужно, чтобы это было UserDefined —

public static function convert($xml)
{
//$array = new ConvertArrayToXML($xml);
//return $array;
//return((Object)$xml);
foreach($xml as $key => $value)
{
if(is_array($value))
{
$array[$key] = self::convert($value);
}
}
return (object)$xml;
}

Я знаю, что это может звучать очень глупо, но я очень плохо знаком с пользовательскими объектами в php.

Пожалуйста, дайте несколько советов по этому вопросу.

Благодарю.

1

Решение

$xml = [
'name'=> 'Arun',
'roll' => '12345',
'id' => '1',
];

class UserDefinedObject { }

$myObj = new UserDefinedObject();
foreach($xml as $key => $value) {
$myObj->{$key} = $value;
}

var_dump($myObj);

РЕДАКТИРОВАТЬ

или небольшой вариант:

$myObj = new UserDefinedObject();
array_walk($xml,
function($value, $key) use ($myObj) {
$myObj->{$key} = $value;
}
);
1

Другие решения

class UserDefinedClass {
public $name;
public $roll;
public $id;

function __construct($name,$roll,$id){
$this->name = $name;
$this->roll = $roll;
$this->id = $id;
}
}
$xml= array(
'name'=> 'Arun',
'roll' => '12345',
'id' => '1'
);$obj = new UserDefinedClass($xml['name'],$xml['roll'],$xml['id']);
// you can use and foreach for dynamic elements.
print_r($obj);
1

$ xml = array (‘name’ => ‘Arun’, ‘roll’ => ‘12345’, ‘id’ => ‘1’);

class UserDefined {

public $name;
public $roll;
public $id;

function __construct($xml) {
$this->name = $xml['name'];
$this->roll = $xml['roll'];
$this->id = $xml['id'];
}

}

print_r (новый UserDefined ($ xml));

0
По вопросам рекламы [email protected]