【发布时间】:2011-04-01 11:15:55
【问题描述】:
我在 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
--------------------------------------
--------------------------------------
out1 和 out2 应该会产生相同的结果,但不会。
也许有人对我有提示?
【问题讨论】:
-
您发布的代码与给定的输出不对应。输出以两行“------”结束,但代码仅在“out2”之后打印一行。当您针对此类奇怪问题发布代码示例时,请不要对其进行编辑,并注意重现为您提供显示输出的准确代码。
-
错误报告是否开启?
print_r没有任何输出通常应该伴随着错误。 -
@borealid:好的,下次我会这样做。除了最后一行破折号外,代码未经编辑。@deceze;错误报告说 Notice: Undefined offset: 0 on line xy --> line is: (print_r($docdatau2[0]);)
标签: php variables types casting return-type