【发布时间】:2013-09-05 18:31:34
【问题描述】:
我在将对象 stdClass 转换为数组时遇到问题。 我试过这样:
return (array) $booking;
或
return (array) json_decode($booking,true);
或
return (array) json_decode($booking);
强制转换之前的数组已满,只有一条记录,在我尝试强制转换后它是空的。 如何在不删除行的情况下进行转换/转换?
投射前的数组:
array(1) { [0]=> object(stdClass)#23 (36) { ["id"]=> string(1) "2" ["name"]=> string(0) "" ["code"]=> string(5) "56/13" } }
如果我尝试创建var_dump($booking);,则转换后为空 NULL
我也试过这个功能,但总是空:
public function objectToArray($d) {
if (is_object($d)) {
// Gets the properties of the given object
// with get_object_vars function
$d = get_object_vars($d);
}
if (is_array($d)) {
/*
* Return array converted to object
* Using __FUNCTION__ (Magic constant)
* for recursive call
*/
return array_map(__FUNCTION__, $d);
}
else {
// Return array
return $d;
}
}
【问题讨论】:
-
php.net/var_dump ... php.net/var_export - 在
return之前。在阵列上运行json_decode对我来说似乎非常绝望,可能在电脑前坐得太久了,现在该休息一下了? -
澄清一下:
var_dump($booking);输出NULL? -
投后是的,如果我尝试打印这个:$booking[0]['id'] 返回我不存在
-
您可能有兴趣阅读:How to get useful error messages in PHP? - 无论如何,我要求
var_dump()在 投射之前。顺便说一句,不要重复使用相同的变量名。如果$booking是投射之前的东西,它应该仍然是 before 投射的东西,而不是之后的东西。输入变量和处理变量之间的差异,否则您会遇到无法再理解的问题。 -
缩短问题(如删除自定义功能代码)可能有助于查看接受的答案而无需向下滚动