Como convertir un Array en un Objeto de PHP?

La pregunta es clara, quizá en algún momento nos interese o nos sea mas comprensible trabajar con un Array como un Objeto y no como Array.

El código es:

<?php

$hoy 
= array('comida' => 'arros''postre' => 'pastel');

$hoyObjeto = (object)$hoy;

echo 
$hoyObjeto->comida// Salida: arros
echo $hoyObjeto->postre// Salida: pastel


?>


Como se puede apreciar no tiene dificultad ninguna.

Pero como queremos ir siempre mas allá probamos un array numérico:

<?php

$hoy 
= array('comida' => 'arros''postre' => 'pastel'=> 'nada');

$hoyObjeto = (object)$hoy;

echo 
$hoyObjeto->comida// Salida: arros
echo $hoyObjeto->postre// Salida: pastel

/*
echo $hoyObjeto->0;

Esta linea produce el siguiente error:

Parse error: syntax error, unexpected T_LNUMBER, 
expecting T_STRING or T_VARIABLE or '{' or '$' ....
*/

var_dump($hoyObjeto); 
/*
Salida: object(stdClass)#1 (3) { 
   ["comida"]=>  string(5) "arros" 
   ["postre"]=>  string(6) "pastel" 
   [0]=>  string(4) "nada" } 

*/

?>


Como se aprecia en el código hacer un echo del objeto con un índice numérico es imposible, eso lo sabemos gracias al error:

Parse error: syntax error, unexpected T_LNUMBER, expecting T_STRING or T_VARIABLE or '{' or '$' ....

Basandome en ese error he intentado encapsularlo entre {}, meter el numero en una variable, y algunas cosillas mas. El resultado es que no produce un error, pero la variable tampoco se muestra.

Gracias al var_dump() vemos en todo momento que dentro del objeto existe el dato, pero no hay forma de moestrarlo, por lo que podemos decir que las Arrays no pueden tener índices numéricos al pasarlas a objetos, al menos no si queremos mantener los datos.