У меня есть следующая проблема в PHP:
print_r()
говорит, что это то же самое, gettype()
говорит тот же тип, но последний вывод работает не для обоих случаев, хотя они должны быть одинаковыми!
Мне это очень странно.
код и вывод:
$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]);
Выход:
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 -------------------------------------- --------------------------------------
out2
и out2
должны давать одинаковые результаты, но нет.
Может быть, у кого-нибудь есть намек на меня?
В нем есть несколько ошибок PHP:
То же самое происходит и здесь:
$obj->{0} = "hello"; $arr = (array)$obj; echo $arr[0];
Это происходит потому, что «0» используется как строковый массив, тогда как $ arr [0] ищет ключ целочисленного массива. Он документирован в документации PHP просто путем указания : целочисленные свойства недоступны ( ссылка ).