laravel 架構 數組和對象有點疑惑

來源:互聯網
上載者:User
關鍵字 php laravel
都知道用到foreach($data as $val)迴圈的時候,$data可以是是數組、對象,
但是不解的是明明first(),get()方法獲得的結果都是對象,first()獲得的對象如$data,可以用$data['name']
但是get()獲得的$data不可以,大家懂我的意思嗎?,幫我解惑吧,謝謝了

回複內容:

都知道用到foreach($data as $val)迴圈的時候,$data可以是是數組、對象,
但是不解的是明明first(),get()方法獲得的結果都是對象,first()獲得的對象如$data,可以用$data['name']
但是get()獲得的$data不可以,大家懂我的意思嗎?,幫我解惑吧,謝謝了

假設沒有關聯查詢什麼的,並且結果都轉換成數組形式了(好表達一點~)。
first()獲得的資料是一個一維數組,例如:

$data=[    'name' => 'zhangsan',    'age' => 20,    ...];

這樣的話使用$data['name']是正確輸出的。

get()獲得的資料是一個二維數組(即使只有1條資料),例如:

$data=[    0 => [        'name' => 'zhangsan',        'age' => 20        ...    ],    ...];

$data裡可能有多條數組,所以要輸出name的話要$data[0]['name'],$data[1]['name']...

foreach的內容可以是對象數組,數組的每個元素都是對象

第一:首先說說foreach:

foreach ($items as $item){    //這裡面的$items狹義上是一個數組,往外擴可以理解為一個多元素的集合;    //樓上說的對象數組就可以理解了    }

第二:first()get():

first()

返回的一個Model對象,並且這個對象實現了ArrayAccess介面,所以你可以使用$data['name']這種方式擷取資料

get()

返回的是一個 Model Collection,這裡面的Collection就是集合的意思,你可以簡單理解為對象數組,裡面的每一個元素都是一個Model對象。在使用get()的情況下,哪怕是查詢條件返回一條記錄,也是一個包含一個元素的Collection,而在一個Collection(集合)對象中使用$data['name']必然會報錯。

以上,學習laravel可以關注我的小站:https://laravist.com

樓上的各位大大已經解釋的很清楚了,實在不能理解,你就理解為就像一維數組和多維陣列的關係,說不定$data[0]['name']就可以訪問了,可以好好看看PHP的ArrayAccess

laravel orm擷取到的是對象集合.laravel文檔裡有關於集合的介紹和使用.

很簡單,就因為這一行

class Collection implements ArrayAccess, Arrayable, Countable, IteratorAggregate, Jsonable, JsonSerializable

foreach能用的是數組(array)和集合(collection)

如果不確定 每次在查詢之後 添加 $query->toArray();就行了 就全部都是數組形式的了

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.