PHP: cast to (array) y return-type: array ¿no es lo mismo?

Tengo el siguiente problema en PHP:

print_r() dice que es lo mismo, gettype() dice el mismo tipo, pero el último resultado no funciona para ambos casos, ¡aunque deberían ser lo mismo!

Esto me parece muy extraño.

código y salida:

 $docdatau = get_object_vars(json_decode($docdata)); $docdatau2 = (array)json_decode($docdata); echo "1\n"; echo gettype($docdatau); echo "\n"; echo "--------------------------------------\n"; print_r($docdatau); echo "--------------------------------------\n"; echo "2\n"; echo gettype($docdatau2); echo "\n"; echo "--------------------------------------\n"; print_r($docdatau2); echo "out1\n"; echo "--------------------------------------\n"; print_r($docdatau[0]); echo "out2\n"; echo "--------------------------------------\n"; print_r($docdatau2[0]); 

La salida:

 1 array -------------------------------------- Array ( [0] => stdClass Object ( [produkt] => Produkt 2 [laufzeit] => 24 [addtext] => sdsd [provision] => 39 ) [1] => stdClass Object ( [produkt] => Produkt 1 [laufzeit] => [addtext] => [provision] => 0 ) ) -------------------------------------- 2 array -------------------------------------- Array ( [0] => stdClass Object ( [produkt] => Produkt 2 [laufzeit] => 24 [addtext] => sdsd [provision] => 39 ) [1] => stdClass Object ( [produkt] => Produkt 1 [laufzeit] => [addtext] => [provision] => 0 ) ) out1 -------------------------------------- stdClass Object ( [produkt] => Produkt 2 [laufzeit] => 24 [addtext] => sdsd [provision] => 39 ) out2 -------------------------------------- -------------------------------------- 

out1 y out2 deben producir los mismos resultados pero no.

Quizás alguien tiene una pista para mí?

Hay varios errores de PHP al respecto:

Lo mismo pasa aquí:

 $obj->{0} = "hello"; $arr = (array)$obj; echo $arr[0]; 

Sucede porque el “0” se usa como clave de matriz de cadena, mientras que $ arr [0] busca la clave de matriz de enteros. Está documentado en la documentación PHP simplemente indicando: las propiedades enteras son inaccesibles ( enlace ).