Php 如何检索位于另一个数组中的stdClass对象数组
我有一个数组Php 如何检索位于另一个数组中的stdClass对象数组,php,Php,我有一个数组地址位于数组$array1中 [Address] => stdClass Object ( [Address1] => xxxxxx [City] => xxxxx [State] => xxxxx [Zip] => xxxxxxx ) 我试图调用print_r($array1['Address']),但这不起作用。stdCl
地址位于数组$array1中
[Address] => stdClass Object
(
[Address1] => xxxxxx
[City] => xxxxx
[State] => xxxxx
[Zip] => xxxxxxx
)
我试图调用print_r($array1['Address']),但这不起作用。stdClass对象是否要求我以不同的方式调用它
这是我的设置
我在一个名为CALL\u function
的函数中设置了$array1
。在函数内部,我使用return$array1
访问函数外部的数组
在函数之外,我有这个
$array1 = array();
$array1 = CALL_FUNCTION();
如果我打印($array1)
它将返回包含上述std对象数组的数组。$array1不是数组,它也是一个对象,如错误所示:
致命错误:未捕获错误:无法将stdClass类型的对象用作数组
拥有$array1=array()
没有任何作用,因为您没有使用$array1
,而是立即将其重新分配给调用函数()的返回值
将其作为对象访问:$array1->Address->Address1
但是,为了将来遇到您的代码的程序员,您需要将$array1
的名称更改为类似于$userObject
的名称。您可以将其转换为数组
// get your array
$array1 = CALL_FUNCTION();
// cast the stdObject to an array
$array1['Address'] = (array) $array1['Address'] ;
是的,您需要->
箭头来访问属性什么不起作用?怎么了?您确定$array1实际上是一个数组吗?@KDJ显示$array1的完整转储或显示错误消息。始终确保在开发过程中启用了错误报告。@Devon-这是一条关于无法将STD对象作为数组返回的标准错误消息<代码>致命错误:未捕获错误:无法准确地将stdClass类型的对象用作数组
@KDJ,并且由于您没有尝试访问地址键,这意味着$array1实际上是它报告错误的对象。错误信息非常有用,请始终确保将它们包含在问题中。这将导致相同的错误。。。在调用函数()之前,您需要(数组)
类型转换。但实际上,没有迹象表明OP需要这样做conversion@Mr玻璃-谢谢你的努力。不幸的是,这不起作用。我将坚持使用->
的标准方法来访问单个对象变量。我想值得一试。不像看上去那么容易。@KDJ,它不起作用了吗?我在发布代码之前对它进行了测试。使用(array)
强制转换stdObject给我一个数组。@MrGlass因为$array1和$array['Address']都是stdClass对象,而不是数组。您需要执行多个强制转换才能将它们都转换到一个数组。@Devon,您的示例数据和代码并不表示array1
是stdObject。将它表示为数组,而不是stdObject。array1实际上是一个伪名称……它实际上不是代码中数组的名称。这使问题更容易理解。我将坚持使用标准的->
来访问对象值。我尝试了一些不同的东西…但这并不像我希望的那么容易。谢谢你的意见。