我正在使用PHP 5.4。我的类中的大多数数据库查询都将结果作为对象返回。我有一些查询,我正在转换为返回对象而不是数组。我正在转换的其中一个查询在我的应用程序中使用了很多。通常我只需要一次访问一个项目,并且我使用简写方法来访问该数组项目。
echo $this->analysis->get_meta_data()['member_id'];
有没有办法使用同样的方法只从带有对象的数组中获取单个结果?我试过了:
echo $this->analysis->get_meta_data()->member_id;
......认为它会起作用,但我得到的只是一个错误。我只是不知道是否可以从数组中以类似的方式从对象返回单个项目。谢谢!
的var_dump:
object(stdClass)#23 (72) {
["id"]=>
string(3) "31734"
["member_id"]=>
string(1) "2233"
["entity_name"]=>
string(15) "Tester, Test"
["create_date"]=>
string(10) "11/13/2012"
["create_user_id"]=>
string(1) "1"
["status_id"]=>
string(1) "1"
...
}
答案 0 :(得分:3)
您可以从ArrayObject
功能返回stdClass
而不是get_meta_data()
,并充分利用这两个世界
function get_meta_data()
{
// your existing code building an array
// ..
// hand array to ArrayObject, telling it to also allow array keys to be accessed as properties
return new ArrayObject($array, ArrayObject::ARRAY_AS_PROPS);
}
//Either method should now work
echo $this->analysis->get_meta_data()['member_id'];
echo $this->analysis->get_meta_data()->member_id;
答案 1 :(得分:0)
您可以创建一个迭代数组的方法。并且对于每次迭代,您移动索引。
你也可以这样做:
get_meta_data() {
$obj->member_id = $var["member_id"];
return $obj;
}
}
class Obj {
var $member_id;
}
我假设你已经在班级的某个地方有$obj
和$var
。