-3

我正在使用 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"
  ...
}
4

2 回答 2

3

你可以从你的函数中返回一个ArrayObject而不是,并拥有两全其美stdClassget_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;   
于 2012-11-30T16:03:24.613 回答
0

您可以创建一个迭代数组的方法。对于每次迭代,您都会移动索引。

你也可以这样做:

    get_meta_data() {

         $obj->member_id = $var["member_id"];
         return $obj;

    }
}
class Obj {

    var $member_id;

}

我假设您已经拥有$obj并且$var在课堂上的某个地方。

于 2012-11-30T15:55:44.457 回答