PHP: Как превратить массив в объект StdClass?

Есть ли функция PHP, которая будет делать это автоматически?

if (is_array($array)) { $obj = new StdClass(); foreach ($array as $key => $val){ $obj->$key = $val; } $array = $obj; } 

Почему бы просто не бросить его?

 $myObj = (object) array("name" => "Jonathan"); print $myObj->name; // Jonathan 

Если он многомерный, Ричард Кастера предлагает следующее решение в своем блоге :

 function arrayToObject($array) { if(!is_array($array)) { return $array; } $object = new stdClass(); if (is_array($array) && count($array) > 0) { foreach ($array as $name=>$value) { $name = strtolower(trim($name)); if (!empty($name)) { $object->$name = arrayToObject($value); } } return $object; } else { return FALSE; } } 

Если это одномерный массив, бросок должен работать:

 $obj = (object)$array; 

Это работает для меня

 if (is_array($array)) { $obj = new StdClass(); foreach ($array as $key => $val){ $key = str_replace("-","_",$key) $obj->$key = $val; } $array = $obj; } 

убедитесь, что str_replace существует как '-' не допускается в именах переменных в php, а также:

Правила именования переменных

 * A variable name must start with a letter or an underscore "_" * A variable name can only contain alpha-numeric characters and underscores (az, AZ, 0-9, and _ ) * A variable name should not contain spaces. If a variable name is more than one word, it should be separated with an underscore ($my_string), or with capitalization ($myString) 

Итак, поскольку они разрешены в массивах, если какой-либо из них входит в ключ $ из массива, который вы конвертируете, у вас будут неприятные ошибки.