【发布时间】:2025-12-24 19:30:05
【问题描述】:
我正在学习 Laravel,它使用 OOPS 概念。现在我发现很难理解数组和对象之间的真正区别。我其实知道什么是数组和对象。
数组可以容纳多个变量,其中对象是一个独立的实体,它有自己的参数和方法。我们通常使用 foreach 循环来循环它们。
在 laravel 中,数据以模型实例的形式作为对象返回。当查询响应有多个结果时,数据以包含对象的数组的形式返回。我试图了解 laravel 中使用的集合类。
Codebright 参考说
Collection 类本身只是对象数组的包装器,但还有许多其他有趣的方法可以帮助您从数组中提取项目。
现在回到我的困惑。我使用了不同的方法,例如 all() 和 first() 方法来获取结果。但有时当我使用箭头 (->) 从一个对象(包含在一个数组中)中使用 foreach 循环获取数据时,它会显示一个错误,表明它是一个非对象。然后我用了方括号,数据就显示出来了。
我知道我们使用[] 从数组中获取数据,我们使用-> 从对象中获取数据。但我仍然对 Laravel 感到困惑。有人可以参考 Laravel 中使用的 Collection 类清楚地说明它们之间的区别吗?
编辑:: 使用此代码时开始出现混乱:
foreach($self_conversations as $self_conversations_fetch){
//fetching each conversation id
$conversation_id = Conversation::find($self_conversations_fetch->conversation_id);
$user_id = array();
//fetching each conversation member's id
foreach($conversation_id->conversationsMember as $conversationmembers)
$user_id[] = $conversationmembers->user_id;
$self_id = User::where('email', Session::get('email'))->first()->id;
$self_id_array = array($self_id);
$friend_id_array = array_diff($user_id, $self_id_array);
foreach($friend_id_array as $friend_id) array_push($friend_ids, $friend_id);
$conversations_reply_obj = ConversationReply::where('conversation_id', $self_conversations_fetch->conversation_id)->orderBy('updated_at', 'desc')->first();
$conversations_reply[] = $conversations_reply_obj['reply'];
}
如您所见,我使用方括号来获取数据(在最后一行)。
$conversations_reply[] = $conversations_reply_obj['reply'];
我期待箭头在这里工作
【问题讨论】:
标签: php arrays object laravel-4