【发布时间】:2011-09-15 15:29:47
【问题描述】:
我有一个这样的对象:
object(stdClass)#27 (1)
{
[0] => object(stdClass)#26 (6)
{
["_id"] => object(MongoId)#24 (1)
{
["$id"] => string(24) "4e6ea439caa47c2c0c000000"
}
["username"] => string(16) "wdfkewkghbrjkghb"
["email"]=> string(24) "wdhbfjkwhegerg@€rg.efg"
["password"]=> string(32) "4297f44b13955235245b2497399d7a93"
["slug"]=> string(16) "wdfkewkghbrjkghb"
["insert_datetime"]=> string(19) "2011-09-13 12:09:49"
}
}
我将此对象分配给$user。
我无法通过 $user->username 访问此对象属性,因为我收到了以下消息:
未定义属性:
stdClass::$username
如果我执行var_dump(get_object_vars($user)),它会返回一个空数组。
如何获取属性?如果可以避免的话,我不想使用循环。
流程是这样的:
-
从 mongo_db 检索结果:
$returns = array(); while ($documents->hasNext()) { if ($this->CI->config->item('mongo_return') == 'object') { $returns[] = (object) $documents->getNext(); } if ($this->CI->config->item('mongo_return') == 'array') { $returns[] = (array) $documents->getNext(); } } if ($this->CI->config->item('mongo_return') == 'object') { return (object)$returns; } if ($this->CI->config->item('mongo_return') == 'array') { return $returns; } -
将数据传递给模型
function populateBy($what = false) { return $this->mongo_db ->where($what) ->get($this->tb['users']); } -
肯定会在控制器中抓取结果:
$what = array( 'email'=>$email, 'password'=>$password, 'confirm'=>'1' ); $user = $this->model_user->populateBy($what);
【问题讨论】:
-
你能告诉我上下文吗?我想我可以回答你的问题,但我想先看看你的思考过程
-
@gilden:这是正确的答案;你为什么删除它?
-
@tomalak-geretkal 我做了一些调查,但我不确定它是否正确。
-
我及时签出了(在他删除之前)gilden的答案,我证明了 echo $user[0]->username;但它不正确:P,它返回错误:不能使用 stdClass 类型的对象作为数组
-
@gilden:嗯,你的回答是正确的,但不完整。 :P
标签: php arrays object extraction