<article><h1>Laravel 的集合 Collection</h1><ul><li><a href="#introduction">簡介</a><ul><li><a href="#creating-collections">創建集合</a></li></ul></li><li><a href="#available-methods">可用的方法</a></li><li><a href="#higher-order-messages">高階信息傳遞</a></li></ul><p><a name="introduction"></a></p><h2><a href="#introduction">簡介</a></h2><p><code class=" language-php">Illuminate\<span class="token package">Support<span class="token punctuation">\</span>Collection</span></code> 類提供一個流暢、便利的封裝來操控數組數據。如下面的示例代碼,我們用 <code class=" language-php">collect</code> 函數從數組中創建新的集合實例,對每一個元素運行 <code class=" language-php">strtoupper</code> 函數,然后移除所有的空元素:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$collection</span> <span class="token operator">=</span> <span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span><span class="token string">'taylor'</span><span class="token punctuation">,</span> <span class="token string">'abigail'</span><span class="token punctuation">,</span> <span class="token keyword">null</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">map<span class="token punctuation">(</span></span><span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token variable">$name</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">return</span> <span class="token function">strtoupper<span class="token punctuation">(</span></span><span class="token variable">$name</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span>
<span class="token operator">-</span><span class="token operator">></span><span class="token function">reject<span class="token punctuation">(</span></span><span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token variable">$name</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">return</span> <span class="token function">empty<span class="token punctuation">(</span></span><span class="token variable">$name</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre><p>如上面的代碼示例,<code class=" language-php">Collection</code> 類支持鏈式調用,一般來說,每一個 <code class=" language-php">Collection</code> 方法會返回一個全新的 <code class=" language-php">Collection</code> 實例,你可以放心地進行鏈接調用。</p><p><a name="creating-collections"></a></p><h3>創建集合</h3><p>如上所述,<code class=" language-php">collect</code> 輔助函數會利用傳入的數組生成一個新的 <code class=" language-php">Illuminate\<span class="token package">Support<span class="token punctuation">\</span>Collection</span></code> 實例。所以要創建一個集合就這么簡單:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$collection</span> <span class="token operator">=</span> <span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre><blockquote class="has-icon tip"><p><div class="flag"><span class="svg"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/" version="1.1" x="0px" y="0px" width="56.6px" height="87.5px" viewBox="0 0 56.6 87.5" enable-background="new 0 0 56.6 87.5" xml:space="preserve"><path fill="#FFFFFF" d="M28.7 64.5c-1.4 0-2.5-1.1-2.5-2.5v-5.7 -5V41c0-1.4 1.1-2.5 2.5-2.5s2.5 1.1 2.5 2.5v10.1 5 5.8C31.2 63.4 30.1 64.5 28.7 64.5zM26.4 0.1C11.9 1 0.3 13.1 0 27.7c-0.1 7.9 3 15.2 8.2 20.4 0.5 0.5 0.8 1 1 1.7l3.1 13.1c0.3 1.1 1.3 1.9 2.4 1.9 0.3 0 0.7-0.1 1.1-0.2 1.1-0.5 1.6-1.8 1.4-3l-2-8.4 -0.4-1.8c-0.7-2.9-2-5.7-4-8 -1-1.2-2-2.5-2.7-3.9C5.8 35.3 4.7 30.3 5.4 25 6.7 14.5 15.2 6.3 25.6 5.1c13.9-1.5 25.8 9.4 25.8 23 0 4.1-1.1 7.9-2.9 11.2 -0.8 1.4-1.7 2.7-2.7 3.9 -2 2.3-3.3 5-4 8L41.4 53l-2 8.4c-0.3 1.2 0.3 2.5 1.4 3 0.3 0.2 0.7 0.2 1.1 0.2 1.1 0 2.2-0.8 2.4-1.9l3.1-13.1c0.2-0.6 0.5-1.2 1-1.7 5-5.1 8.2-12.1 8.2-19.8C56.4 12 42.8-1 26.4 0.1zM43.7 69.6c0 0.5-0.1 0.9-0.3 1.3 -0.4 0.8-0.7 1.6-0.9 2.5 -0.7 3-2 8.6-2 8.6 -1.3 3.2-4.4 5.5-7.9 5.5h-4.1H28h-0.5 -3.6c-3.5 0-6.7-2.4-7.9-5.7l-0.1-0.4 -1.8-7.8c-0.4-1.1-0.8-2.1-1.2-3.1 -0.1-0.3-0.2-0.5-0.2-0.9 0.1-1.3 1.3-2.1 2.6-2.1H41C42.4 67.5 43.6 68.2 43.7 69.6zM37.7 72.5H26.9c-4.2 0-7.2 3.9-6.3 7.9 0.6 1.3 1.8 2.1 3.2 2.1h4.1 0.5 0.5 3.6c1.4 0 2.7-0.8 3.2-2.1L37.7 72.5z"></path></svg></span></div> 默認 <a href="/docs/5.4/eloquent">Eloquent</a> 模型的查詢結果總是以 <code class=" language-php">Collection</code> 實例返回。</p></blockquote><p><a name="available-methods"></a></p><h2><a href="#available-methods">可用的方法</a></h2><p>接下來,我們將會探討 <code class=" language-php">Collection</code> 類的所有方法。要記得的是,所有方法都支持鏈式調用,幾乎所有的方法都會返回新的 <code class=" language-php">Collection</code> 實例,讓你保留原版的集合以備不時之需。</p><style>#collection-method-list > p {
column-count: 3; -moz-column-count: 3; -webkit-column-count: 3;
column-gap: 2em; -moz-column-gap: 2em; -webkit-column-gap: 2em;
}
#collection-method-list a {
display: block;
}</style><div id="collection-method-list"><p><a href="#method-all">all</a> <a href="#method-avg">avg</a> <a href="#method-chunk">chunk</a> <a href="#method-collapse">collapse</a> <a href="#method-combine">combine</a> <a href="#method-contains">contains</a> <a href="#method-count">count</a> <a href="#method-diff">diff</a> <a href="#method-diffkeys">diffKeys</a> <a href="#method-each">each</a> <a href="#method-every">every</a> <a href="#method-except">except</a> <a href="#method-filter">filter</a> <a href="#method-first">first</a> <a href="#method-flatmap">flatMap</a> <a href="#method-flatten">flatten</a> <a href="#method-flip">flip</a> <a href="#method-forget">forget</a> <a href="#method-forpage">forPage</a> <a href="#method-get">get</a> <a href="#method-groupby">groupBy</a> <a href="#method-has">has</a> <a href="#method-implode">implode</a> <a href="#method-intersect">intersect</a> <a href="#method-isempty">isEmpty</a> <a href="#method-keyby">keyBy</a> <a href="#method-keys">keys</a> <a href="#method-last">last</a> <a href="#method-map">map</a> <a href="#method-mapwithkeys">mapWithKeys</a> <a href="#method-max">max</a> <a href="#method-merge">merge</a> <a href="#method-min">min</a> <a href="#method-nth">nth</a> <a href="#method-only">only</a> <a href="#method-partition">partition</a> <a href="#method-pipe">pipe</a> <a href="#method-pluck">pluck</a> <a href="#method-pop">pop</a> <a href="#method-prepend">prepend</a> <a href="#method-pull">pull</a> <a href="#method-push">push</a> <a href="#method-put">put</a> <a href="#method-random">random</a> <a href="#method-reduce">reduce</a> <a href="#method-reject">reject</a> <a href="#method-reverse">reverse</a> <a href="#method-search">search</a> <a href="#method-shift">shift</a> <a href="#method-shuffle">shuffle</a> <a href="#method-slice">slice</a> <a href="#method-sort">sort</a> <a href="#method-sortby">sortBy</a> <a href="#method-sortbydesc">sortByDesc</a> <a href="#method-splice">splice</a> <a href="#method-split">split</a> <a href="#method-sum">sum</a> <a href="#method-take">take</a> <a href="#method-toarray">toArray</a> <a href="#method-tojson">toJson</a> <a href="#method-transform">transform</a> <a href="#method-union">union</a> <a href="#method-unique">unique</a> <a href="#method-values">values</a> <a href="#method-when">when</a> <a href="#method-where">where</a> <a href="#method-wherestrict">whereStrict</a> <a href="#method-wherein">whereIn</a> <a href="#method-whereinstrict">whereInStrict</a> <a href="#method-zip">zip</a></p></div><p><a name="method-listing"></a></p><h2><a href="#method-listing">方法清單</a></h2><style>#collection-method code {
font-size: 14px;
}
#collection-method:not(.first-collection-method) {
margin-top: 50px;
}</style><p><a name="method-all"></a></p><h4 id="collection-method" class="first-collection-method"><code class=" language-php"><span class="token function">all<span class="token punctuation">(</span></span><span class="token punctuation">)</span></code></h4><p>返回該集合所代表的底層 <code class=" language-php">數組</code>:</p><pre class=" language-php"><code class=" language-php"><span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">all<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// [1, 2, 3]</span></code></pre><p><a name="method-avg"></a></p><h4 id="collection-method"><code class=" language-php"><span class="token function">avg<span class="token punctuation">(</span></span><span class="token punctuation">)</span></code></h4><p>返回集合中所有項目的平均值:</p><pre class=" language-php"><code class=" language-php"><span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">avg<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// 3</span></code></pre><p>如果集合包含了嵌套數組或對象,你可以通過傳遞「鍵」來指定使用哪些值計算平均值:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$collection</span> <span class="token operator">=</span> <span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span>
<span class="token punctuation">[</span><span class="token string">'name'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'JavaScript: The Good Parts'</span><span class="token punctuation">,</span> <span class="token string">'pages'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token number">176</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token punctuation">[</span><span class="token string">'name'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'JavaScript: The Definitive Guide'</span><span class="token punctuation">,</span> <span class="token string">'pages'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token number">1096</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">avg<span class="token punctuation">(</span></span><span class="token string">'pages'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// 636</span></code></pre><p><a name="method-chunk"></a></p><h4 id="collection-method"><code class=" language-php"><span class="token function">chunk<span class="token punctuation">(</span></span><span class="token punctuation">)</span></code></h4><p>將集合拆成多個指定大小的較小集合:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$collection</span> <span class="token operator">=</span> <span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">,</span> <span class="token number">6</span><span class="token punctuation">,</span> <span class="token number">7</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$chunks</span> <span class="token operator">=</span> <span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">chunk<span class="token punctuation">(</span></span><span class="token number">4</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$chunks</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">toArray<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// [[1, 2, 3, 4], [5, 6, 7]]</span></code></pre><p>這個方法在適用于網格系統如 <a href="http://getbootstrap.com/css/#grid">Bootstrap</a> 的 <a href="/docs/5.4/views">視圖</a> 。想像你有一個 <a href="/docs/5.4/eloquent">Eloquent</a> 模型的集合要顯示在一個網格內:</p><pre class=" language-php"><code class=" language-php">@<span class="token keyword">foreach</span> <span class="token punctuation">(</span><span class="token variable">$products</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">chunk<span class="token punctuation">(</span></span><span class="token number">3</span><span class="token punctuation">)</span> <span class="token keyword">as</span> <span class="token variable">$chunk</span><span class="token punctuation">)</span>
<span class="token markup"><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>row<span class="token punctuation">"</span></span><span class="token punctuation">></span></span></span>
@<span class="token keyword">foreach</span> <span class="token punctuation">(</span><span class="token variable">$chunk</span> <span class="token keyword">as</span> <span class="token variable">$product</span><span class="token punctuation">)</span>
<span class="token markup"><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>col-xs-4<span class="token punctuation">"</span></span><span class="token punctuation">></span></span></span><span class="token punctuation">{</span><span class="token punctuation">{</span> <span class="token variable">$product</span><span class="token operator">-</span><span class="token operator">></span><span class="token property">name</span> <span class="token punctuation">}</span><span class="token punctuation">}</span><span class="token markup"><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>div</span><span class="token punctuation">></span></span></span>
@<span class="token keyword">endforeach</span>
<span class="token markup"><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>div</span><span class="token punctuation">></span></span></span>
@<span class="token keyword">endforeach</span></code></pre><p><a name="method-collapse"></a></p><h4 id="collection-method"><code class=" language-php"><span class="token function">collapse<span class="token punctuation">(</span></span><span class="token punctuation">)</span></code></h4><p>將多個數組組成的集合合成單個一維數組集合:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$collection</span> <span class="token operator">=</span> <span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span><span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">]</span><span class="token punctuation">,</span> <span class="token punctuation">[</span><span class="token number">4</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">,</span> <span class="token number">6</span><span class="token punctuation">]</span><span class="token punctuation">,</span> <span class="token punctuation">[</span><span class="token number">7</span><span class="token punctuation">,</span> <span class="token number">8</span><span class="token punctuation">,</span> <span class="token number">9</span><span class="token punctuation">]</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$collapsed</span> <span class="token operator">=</span> <span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">collapse<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$collapsed</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">all<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// [1, 2, 3, 4, 5, 6, 7, 8, 9]</span></code></pre><p><a name="method-combine"></a></p><h4 id="collection-method"><code class=" language-php"><span class="token function">combine<span class="token punctuation">(</span></span><span class="token punctuation">)</span></code></h4><p>將集合的值作為「鍵」,合并另一個數組或者集合作為「鍵」對應的值。</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$collection</span> <span class="token operator">=</span> <span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span><span class="token string">'name'</span><span class="token punctuation">,</span> <span class="token string">'age'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$combined</span> <span class="token operator">=</span> <span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">combine<span class="token punctuation">(</span></span><span class="token punctuation">[</span><span class="token string">'George'</span><span class="token punctuation">,</span> <span class="token number">29</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$combined</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">all<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// ['name' => 'George', 'age' => 29]</span></code></pre><p><a name="method-contains"></a></p><h4 id="collection-method"><code class=" language-php"><span class="token function">contains<span class="token punctuation">(</span></span><span class="token punctuation">)</span></code></h4><p>判斷集合是否含有指定項目:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$collection</span> <span class="token operator">=</span> <span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span><span class="token string">'name'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'Desk'</span><span class="token punctuation">,</span> <span class="token string">'price'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token number">100</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">contains<span class="token punctuation">(</span></span><span class="token string">'Desk'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// true
</span>
<span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">contains<span class="token punctuation">(</span></span><span class="token string">'New York'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// false</span></code></pre><p>你可以將一對鍵/值傳入 <code class=" language-php">contains</code> 方法,用來判斷該組合是否存在于集合內:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$collection</span> <span class="token operator">=</span> <span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span>
<span class="token punctuation">[</span><span class="token string">'product'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'Desk'</span><span class="token punctuation">,</span> <span class="token string">'price'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token number">200</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token punctuation">[</span><span class="token string">'product'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'Chair'</span><span class="token punctuation">,</span> <span class="token string">'price'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token number">100</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">contains<span class="token punctuation">(</span></span><span class="token string">'product'</span><span class="token punctuation">,</span> <span class="token string">'Bookcase'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// false</span></code></pre><p>最后,你也可以傳入一個回調函數到 <code class=" language-php">contains</code> 方法內運行你自己的判斷語句:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$collection</span> <span class="token operator">=</span> <span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">contains<span class="token punctuation">(</span></span><span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token variable">$value</span><span class="token punctuation">,</span> <span class="token variable">$key</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">return</span> <span class="token variable">$value</span> <span class="token operator">></span> <span class="token number">5</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// false</span></code></pre><p><a name="method-count"></a></p><h4 id="collection-method"><code class=" language-php"><span class="token function">count<span class="token punctuation">(</span></span><span class="token punctuation">)</span></code></h4><p>返回該集合內的項目總數:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$collection</span> <span class="token operator">=</span> <span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">count<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// 4</span></code></pre><p><a name="method-diff"></a></p><h4 id="collection-method"><code class=" language-php"><span class="token function">diff<span class="token punctuation">(</span></span><span class="token punctuation">)</span></code></h4><p>將集合與其它集合或純 PHP <code class=" language-php">數組</code> 進行值的比較,返回第一個集合中存在而第二個集合中不存在的值:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$collection</span> <span class="token operator">=</span> <span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$diff</span> <span class="token operator">=</span> <span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">diff<span class="token punctuation">(</span></span><span class="token punctuation">[</span><span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">,</span> <span class="token number">6</span><span class="token punctuation">,</span> <span class="token number">8</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$diff</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">all<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// [1, 3, 5]</span></code></pre><p><a name="method-diffkeys"></a></p><h4 id="collection-method"><code class=" language-php"><span class="token function">diffKeys<span class="token punctuation">(</span></span><span class="token punctuation">)</span></code></h4><p>將集合與其它集合或純 PHP <code class=" language-php">數組</code> 的「鍵」進行比較,返回第一個集合中存在而第二個集合中不存在「鍵」所對應的鍵值對:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$collection</span> <span class="token operator">=</span> <span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span>
<span class="token string">'one'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token number">10</span><span class="token punctuation">,</span>
<span class="token string">'two'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token number">20</span><span class="token punctuation">,</span>
<span class="token string">'three'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token number">30</span><span class="token punctuation">,</span>
<span class="token string">'four'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token number">40</span><span class="token punctuation">,</span>
<span class="token string">'five'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token number">50</span><span class="token punctuation">,</span>
<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$diff</span> <span class="token operator">=</span> <span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">diffKeys<span class="token punctuation">(</span></span><span class="token punctuation">[</span>
<span class="token string">'two'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token number">2</span><span class="token punctuation">,</span>
<span class="token string">'four'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token number">4</span><span class="token punctuation">,</span>
<span class="token string">'six'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token number">6</span><span class="token punctuation">,</span>
<span class="token string">'eight'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token number">8</span><span class="token punctuation">,</span>
<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$diff</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">all<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// ['one' => 10, 'three' => 30, 'five' => 50]</span></code></pre><p><a name="method-each"></a></p><h4 id="collection-method"><code class=" language-php"><span class="token function">each<span class="token punctuation">(</span></span><span class="token punctuation">)</span></code></h4><p>遍歷集合中的項目,并將之傳入回調函數:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$collection</span> <span class="token operator">=</span> <span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">each<span class="token punctuation">(</span></span><span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token variable">$item</span><span class="token punctuation">,</span> <span class="token variable">$key</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token comment" spellcheck="true"> //
</span><span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre><p>回調函數中返回 <code class=" language-php"><span class="token boolean">false</span></code> 以中斷循環:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$collection</span> <span class="token operator">=</span> <span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">each<span class="token punctuation">(</span></span><span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token variable">$item</span><span class="token punctuation">,</span> <span class="token variable">$key</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token comment" spellcheck="true">/* some condition */</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">return</span> <span class="token boolean">false</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre><p><a name="method-every"></a></p><h4 id="collection-method"><code class=" language-php"><span class="token function">every<span class="token punctuation">(</span></span><span class="token punctuation">)</span></code></h4><p>判斷集合中每一個元素是否都符合指定條件:</p><pre class=" language-php"><code class=" language-php"><span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">every<span class="token punctuation">(</span></span><span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token variable">$value</span><span class="token punctuation">,</span> <span class="token variable">$key</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">return</span> <span class="token variable">$value</span> <span class="token operator">></span> <span class="token number">2</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// false</span></code></pre><p><a name="method-except"></a></p><h4 id="collection-method"><code class=" language-php"><span class="token function">except<span class="token punctuation">(</span></span><span class="token punctuation">)</span></code></h4><p>返回集合中除了指定鍵以外的所有項目:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$collection</span> <span class="token operator">=</span> <span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span><span class="token string">'product_id'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token string">'price'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token number">100</span><span class="token punctuation">,</span> <span class="token string">'discount'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token boolean">false</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$filtered</span> <span class="token operator">=</span> <span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">except<span class="token punctuation">(</span></span><span class="token punctuation">[</span><span class="token string">'price'</span><span class="token punctuation">,</span> <span class="token string">'discount'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$filtered</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">all<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// ['product_id' => 1]</span></code></pre><p>與 <code class=" language-php">except</code> 相反的方法請查看 <a href="#method-only">only</a>。</p><p><a name="method-filter"></a></p><h4 id="collection-method"><code class=" language-php"><span class="token function">filter<span class="token punctuation">(</span></span><span class="token punctuation">)</span></code></h4><p>使用回調函數篩選集合,只留下那些通過判斷測試的項目:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$collection</span> <span class="token operator">=</span> <span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$filtered</span> <span class="token operator">=</span> <span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">filter<span class="token punctuation">(</span></span><span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token variable">$value</span><span class="token punctuation">,</span> <span class="token variable">$key</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">return</span> <span class="token variable">$value</span> <span class="token operator">></span> <span class="token number">2</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$filtered</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">all<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// [3, 4]</span></code></pre><p>如果沒有提供回調函數,集合中所有返回 <code class=" language-php"><span class="token boolean">false</span></code> 的元素都會被移除:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$collection</span> <span class="token operator">=</span> <span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">,</span> <span class="token keyword">null</span><span class="token punctuation">,</span> <span class="token boolean">false</span><span class="token punctuation">,</span> <span class="token string">''</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">filter<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">all<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// [1, 2, 3]</span></code></pre><p>與 <code class=" language-php">filter</code> 相反的方法可以查看 <a href="#method-reject">reject</a>。</p><p><a name="method-first"></a></p><h4 id="collection-method"><code class=" language-php"><span class="token function">first<span class="token punctuation">(</span></span><span class="token punctuation">)</span></code></h4><p>返回集合第一個通過指定測試的元素:</p><pre class=" language-php"><code class=" language-php"><span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">first<span class="token punctuation">(</span></span><span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token variable">$value</span><span class="token punctuation">,</span> <span class="token variable">$key</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">return</span> <span class="token variable">$value</span> <span class="token operator">></span> <span class="token number">2</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// 3</span></code></pre><p>你也可以不傳入參數使用 <code class=" language-php">first</code> 方法以獲取集合中第一個元素。如果集合是空的,則會返回 <code class=" language-php"><span class="token keyword">null</span></code>:</p><pre class=" language-php"><code class=" language-php"><span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">first<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// 1</span></code></pre><p><a name="method-flatmap"></a></p><h4 id="collection-method"><code class=" language-php"><span class="token function">flatMap<span class="token punctuation">(</span></span><span class="token punctuation">)</span></code></h4><p>對集合內所有子集遍歷執行回調,并在最后轉為一維集合:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$collection</span> <span class="token operator">=</span> <span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span>
<span class="token punctuation">[</span><span class="token string">'name'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'Sally'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token punctuation">[</span><span class="token string">'school'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'Arkansas'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token punctuation">[</span><span class="token string">'age'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token number">28</span><span class="token punctuation">]</span>
<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$flattened</span> <span class="token operator">=</span> <span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">flatMap<span class="token punctuation">(</span></span><span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token variable">$values</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">return</span> <span class="token function">array_map<span class="token punctuation">(</span></span><span class="token string">'strtoupper'</span><span class="token punctuation">,</span> <span class="token variable">$values</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$flattened</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">all<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// ['name' => 'SALLY', 'school' => 'ARKANSAS', 'age' => '28'];</span></code></pre><p><a name="method-flatten"></a></p><h4 id="collection-method"><code class=" language-php"><span class="token function">flatten<span class="token punctuation">(</span></span><span class="token punctuation">)</span></code></h4><p>將多維集合轉為一維集合:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$collection</span> <span class="token operator">=</span> <span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span><span class="token string">'name'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'taylor'</span><span class="token punctuation">,</span> <span class="token string">'languages'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token punctuation">[</span><span class="token string">'php'</span><span class="token punctuation">,</span> <span class="token string">'javascript'</span><span class="token punctuation">]</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$flattened</span> <span class="token operator">=</span> <span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">flatten<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$flattened</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">all<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// ['taylor', 'php', 'javascript'];</span></code></pre><p>你可以選擇性地傳入遍歷深度的參數:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$collection</span> <span class="token operator">=</span> <span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span>
<span class="token string">'Apple'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token punctuation">[</span>
<span class="token punctuation">[</span><span class="token string">'name'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'iPhone 6S'</span><span class="token punctuation">,</span> <span class="token string">'brand'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'Apple'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token string">'Samsung'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token punctuation">[</span>
<span class="token punctuation">[</span><span class="token string">'name'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'Galaxy S7'</span><span class="token punctuation">,</span> <span class="token string">'brand'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'Samsung'</span><span class="token punctuation">]</span>
<span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$products</span> <span class="token operator">=</span> <span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">flatten<span class="token punctuation">(</span></span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$products</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">values<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">all<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">/*
[
['name' => 'iPhone 6S', 'brand' => 'Apple'],
['name' => 'Galaxy S7', 'brand' => 'Samsung'],
]
*/</span></code></pre><p>在這個例子里,調用 <code class=" language-php">flatten</code> 方法時不傳入深度參數會遍歷嵌套數組降維成一維數組,生成 <code class=" language-php"><span class="token punctuation">[</span><span class="token string">'iPhone 6S'</span><span class="token punctuation">,</span> <span class="token string">'Apple'</span><span class="token punctuation">,</span> <span class="token string">'Galaxy S7'</span><span class="token punctuation">,</span> <span class="token string">'Samsung'</span><span class="token punctuation">]</span></code>,傳入深度參數能讓你限制降維嵌套數組的層數。</p><p><a name="method-flip"></a></p><h4 id="collection-method"><code class=" language-php"><span class="token function">flip<span class="token punctuation">(</span></span><span class="token punctuation">)</span></code></h4><p>將集合中的鍵和對應的數值進行互換:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$collection</span> <span class="token operator">=</span> <span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span><span class="token string">'name'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'taylor'</span><span class="token punctuation">,</span> <span class="token string">'framework'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'laravel'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$flipped</span> <span class="token operator">=</span> <span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">flip<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$flipped</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">all<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// ['taylor' => 'name', 'laravel' => 'framework']</span></code></pre><p><a name="method-forget"></a></p><h4 id="collection-method"><code class=" language-php"><span class="token function">forget<span class="token punctuation">(</span></span><span class="token punctuation">)</span></code></h4><p>通過集合的鍵來移除掉集合中的一個項目:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$collection</span> <span class="token operator">=</span> <span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span><span class="token string">'name'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'taylor'</span><span class="token punctuation">,</span> <span class="token string">'framework'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'laravel'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">forget<span class="token punctuation">(</span></span><span class="token string">'name'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">all<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// ['framework' => 'laravel']</span></code></pre><blockquote class="has-icon note"><p><div class="flag"><span class="svg"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/" version="1.1" x="0px" y="0px" width="90px" height="90px" viewBox="0 0 90 90" enable-background="new 0 0 90 90" xml:space="preserve"><path fill="#FFFFFF" d="M45 0C20.1 0 0 20.1 0 45s20.1 45 45 45 45-20.1 45-45S69.9 0 45 0zM45 74.5c-3.6 0-6.5-2.9-6.5-6.5s2.9-6.5 6.5-6.5 6.5 2.9 6.5 6.5S48.6 74.5 45 74.5zM52.1 23.9l-2.5 29.6c0 2.5-2.1 4.6-4.6 4.6 -2.5 0-4.6-2.1-4.6-4.6l-2.5-29.6c-0.1-0.4-0.1-0.7-0.1-1.1 0-4 3.2-7.2 7.2-7.2 4 0 7.2 3.2 7.2 7.2C52.2 23.1 52.2 23.5 52.1 23.9z"></path></svg></span></div> 與大多數其它集合的方法不同,<code class=" language-php">forget</code> 不會返回修改過后的新集合;它會直接修改調用它的集合。</p></blockquote><p><a name="method-forpage"></a></p><h4 id="collection-method"><code class=" language-php"><span class="token function">forPage<span class="token punctuation">(</span></span><span class="token punctuation">)</span></code></h4><p>返回可用來在指定頁碼上所顯示項目的新集合。這個方法第一個參數是頁碼數,第二個參數是每頁顯示的個數。</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$collection</span> <span class="token operator">=</span> <span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">,</span> <span class="token number">6</span><span class="token punctuation">,</span> <span class="token number">7</span><span class="token punctuation">,</span> <span class="token number">8</span><span class="token punctuation">,</span> <span class="token number">9</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$chunk</span> <span class="token operator">=</span> <span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">forPage<span class="token punctuation">(</span></span><span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$chunk</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">all<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// [4, 5, 6]</span></code></pre><p><a name="method-get"></a></p><h4 id="collection-method"><code class=" language-php"><span class="token function">get<span class="token punctuation">(</span></span><span class="token punctuation">)</span></code></h4><p>返回指定鍵的項目。如果該鍵不存在,則返回 <code class=" language-php"><span class="token keyword">null</span></code>:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$collection</span> <span class="token operator">=</span> <span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span><span class="token string">'name'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'taylor'</span><span class="token punctuation">,</span> <span class="token string">'framework'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'laravel'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$value</span> <span class="token operator">=</span> <span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">get<span class="token punctuation">(</span></span><span class="token string">'name'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// taylor</span></code></pre><p>你可以選擇性地傳入一個默認值作為第二個參數:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$collection</span> <span class="token operator">=</span> <span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span><span class="token string">'name'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'taylor'</span><span class="token punctuation">,</span> <span class="token string">'framework'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'laravel'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$value</span> <span class="token operator">=</span> <span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">get<span class="token punctuation">(</span></span><span class="token string">'foo'</span><span class="token punctuation">,</span> <span class="token string">'default-value'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// default-value</span></code></pre><p>你甚至可以傳入回調函數當默認值。如果指定的鍵不存在,就會返回回調函數的運行結果:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">get<span class="token punctuation">(</span></span><span class="token string">'email'</span><span class="token punctuation">,</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">return</span> <span class="token string">'default-value'</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// default-value</span></code></pre><p><a name="method-groupby"></a></p><h4 id="collection-method"><code class=" language-php"><span class="token function">groupBy<span class="token punctuation">(</span></span><span class="token punctuation">)</span></code></h4><p>根據指定的「鍵」為集合內的項目分組:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$collection</span> <span class="token operator">=</span> <span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span>
<span class="token punctuation">[</span><span class="token string">'account_id'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'account-x10'</span><span class="token punctuation">,</span> <span class="token string">'product'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'Chair'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token punctuation">[</span><span class="token string">'account_id'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'account-x10'</span><span class="token punctuation">,</span> <span class="token string">'product'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'Bookcase'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token punctuation">[</span><span class="token string">'account_id'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'account-x11'</span><span class="token punctuation">,</span> <span class="token string">'product'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'Desk'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$grouped</span> <span class="token operator">=</span> <span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">groupBy<span class="token punctuation">(</span></span><span class="token string">'account_id'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$grouped</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">toArray<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">/*
[
'account-x10' => [
['account_id' => 'account-x10', 'product' => 'Chair'],
['account_id' => 'account-x10', 'product' => 'Bookcase'],
],
'account-x11' => [
['account_id' => 'account-x11', 'product' => 'Desk'],
],
]
*/</span></code></pre><p>除了傳入字符串的「鍵」之外,你也可以傳入回調函數。該函數應該返回你希望用來分組的鍵的值。</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$grouped</span> <span class="token operator">=</span> <span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">groupBy<span class="token punctuation">(</span></span><span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token variable">$item</span><span class="token punctuation">,</span> <span class="token variable">$key</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">return</span> <span class="token function">substr<span class="token punctuation">(</span></span><span class="token variable">$item</span><span class="token punctuation">[</span><span class="token string">'account_id'</span><span class="token punctuation">]</span><span class="token punctuation">,</span> <span class="token operator">-</span><span class="token number">3</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$grouped</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">toArray<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">/*
[
'x10' => [
['account_id' => 'account-x10', 'product' => 'Chair'],
['account_id' => 'account-x10', 'product' => 'Bookcase'],
],
'x11' => [
['account_id' => 'account-x11', 'product' => 'Desk'],
],
]
*/</span></code></pre><p><a name="method-has"></a></p><h4 id="collection-method"><code class=" language-php"><span class="token function">has<span class="token punctuation">(</span></span><span class="token punctuation">)</span></code></h4><p>檢查集合中是否含有指定的「鍵」:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$collection</span> <span class="token operator">=</span> <span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span><span class="token string">'account_id'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token string">'product'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'Desk'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">has<span class="token punctuation">(</span></span><span class="token string">'product'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// true</span></code></pre><p><a name="method-implode"></a></p><h4 id="collection-method"><code class=" language-php"><span class="token function">implode<span class="token punctuation">(</span></span><span class="token punctuation">)</span></code></h4><p><code class=" language-php">implode</code> 方法合并集合中的項目。它的參數依集合中的項目類型而定。假如集合含有數組或對象,你應該傳入你希望連接的屬性的「鍵」,以及你希望放在數值之間的拼接字符串:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$collection</span> <span class="token operator">=</span> <span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span>
<span class="token punctuation">[</span><span class="token string">'account_id'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token string">'product'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'Desk'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token punctuation">[</span><span class="token string">'account_id'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token string">'product'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'Chair'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">implode<span class="token punctuation">(</span></span><span class="token string">'product'</span><span class="token punctuation">,</span> <span class="token string">', '</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// Desk, Chair</span></code></pre><p>假如集合只含有簡單的字符串或數字,則只需要傳入拼接的字符串作為該方法的唯一參數即可:</p><pre class=" language-php"><code class=" language-php"><span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">implode<span class="token punctuation">(</span></span><span class="token string">'-'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// '1-2-3-4-5'</span></code></pre><p><a name="method-intersect"></a></p><h4 id="collection-method"><code class=" language-php"><span class="token function">intersect<span class="token punctuation">(</span></span><span class="token punctuation">)</span></code></h4><p>移除任何指定 <code class=" language-php">數組</code> 或集合內所沒有的數值。最終集合保存著原集合的鍵:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$collection</span> <span class="token operator">=</span> <span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span><span class="token string">'Desk'</span><span class="token punctuation">,</span> <span class="token string">'Sofa'</span><span class="token punctuation">,</span> <span class="token string">'Chair'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$intersect</span> <span class="token operator">=</span> <span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">intersect<span class="token punctuation">(</span></span><span class="token punctuation">[</span><span class="token string">'Desk'</span><span class="token punctuation">,</span> <span class="token string">'Chair'</span><span class="token punctuation">,</span> <span class="token string">'Bookcase'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$intersect</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">all<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// [0 => 'Desk', 2 => 'Chair']</span></code></pre><p><a name="method-isempty"></a></p><h4 id="collection-method"><code class=" language-php"><span class="token function">isEmpty<span class="token punctuation">(</span></span><span class="token punctuation">)</span></code></h4><p>如果集合是空的,<code class=" language-php">isEmpty</code> 方法會返回 <code class=" language-php"><span class="token boolean">true</span></code>:否則返回 <code class=" language-php"><span class="token boolean">false</span></code>:</p><pre class=" language-php"><code class=" language-php"><span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">isEmpty<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// true</span></code></pre><p><a name="method-keyby"></a></p><h4 id="collection-method"><code class=" language-php"><span class="token function">keyBy<span class="token punctuation">(</span></span><span class="token punctuation">)</span></code></h4><p>以指定鍵的值作為集合項目的鍵。如果幾個數據項有相同的鍵,那在新集合中只顯示最后一項:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$collection</span> <span class="token operator">=</span> <span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span>
<span class="token punctuation">[</span><span class="token string">'product_id'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'prod-100'</span><span class="token punctuation">,</span> <span class="token string">'name'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'desk'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token punctuation">[</span><span class="token string">'product_id'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'prod-200'</span><span class="token punctuation">,</span> <span class="token string">'name'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'chair'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$keyed</span> <span class="token operator">=</span> <span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">keyBy<span class="token punctuation">(</span></span><span class="token string">'product_id'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$keyed</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">all<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">/*
[
'prod-100' => ['product_id' => 'prod-100', 'name' => 'Desk'],
'prod-200' => ['product_id' => 'prod-200', 'name' => 'Chair'],
]
*/</span></code></pre><p>你也可以傳入自己的回調函數,該函數應該返回集合的鍵的值:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$keyed</span> <span class="token operator">=</span> <span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">keyBy<span class="token punctuation">(</span></span><span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token variable">$item</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">return</span> <span class="token function">strtoupper<span class="token punctuation">(</span></span><span class="token variable">$item</span><span class="token punctuation">[</span><span class="token string">'product_id'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$keyed</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">all<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">/*
[
'PROD-100' => ['product_id' => 'prod-100', 'name' => 'Desk'],
'PROD-200' => ['product_id' => 'prod-200', 'name' => 'Chair'],
]
*/</span></code></pre><p><a name="method-keys"></a></p><h4 id="collection-method"><code class=" language-php"><span class="token function">keys<span class="token punctuation">(</span></span><span class="token punctuation">)</span></code></h4><p>返回該集合所有的鍵:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$collection</span> <span class="token operator">=</span> <span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span>
<span class="token string">'prod-100'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token punctuation">[</span><span class="token string">'product_id'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'prod-100'</span><span class="token punctuation">,</span> <span class="token string">'name'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'Desk'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token string">'prod-200'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token punctuation">[</span><span class="token string">'product_id'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'prod-200'</span><span class="token punctuation">,</span> <span class="token string">'name'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'Chair'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$keys</span> <span class="token operator">=</span> <span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">keys<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$keys</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">all<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// ['prod-100', 'prod-200']</span></code></pre><p><a name="method-last"></a></p><h4 id="collection-method"><code class=" language-php"><span class="token function">last<span class="token punctuation">(</span></span><span class="token punctuation">)</span></code></h4><p>返回集合中,最后一個通過指定測試的元素:</p><pre class=" language-php"><code class=" language-php"><span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">last<span class="token punctuation">(</span></span><span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token variable">$value</span><span class="token punctuation">,</span> <span class="token variable">$key</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">return</span> <span class="token variable">$value</span> <span class="token operator"><</span> <span class="token number">3</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// 2</span></code></pre><p>你也可以不傳入參數使用 <code class=" language-php">last</code> 方法以獲取集合中最后一個元素。如果集合是空的,則會返回 <code class=" language-php"><span class="token keyword">null</span></code>:</p><pre class=" language-php"><code class=" language-php"><span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">last<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// 4</span></code></pre><p><a name="method-map"></a></p><h4 id="collection-method"><code class=" language-php"><span class="token function">map<span class="token punctuation">(</span></span><span class="token punctuation">)</span></code></h4><p>遍歷整個集合并將每一個數值傳入回調函數。回調函數可以任意修改并返回項目,形成修改過的項目組成的新集合:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$collection</span> <span class="token operator">=</span> <span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$multiplied</span> <span class="token operator">=</span> <span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">map<span class="token punctuation">(</span></span><span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token variable">$item</span><span class="token punctuation">,</span> <span class="token variable">$key</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">return</span> <span class="token variable">$item</span> <span class="token operator">*</span> <span class="token number">2</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$multiplied</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">all<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// [2, 4, 6, 8, 10]</span></code></pre><blockquote class="has-icon note"><p><div class="flag"><span class="svg"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/" version="1.1" x="0px" y="0px" width="90px" height="90px" viewBox="0 0 90 90" enable-background="new 0 0 90 90" xml:space="preserve"><path fill="#FFFFFF" d="M45 0C20.1 0 0 20.1 0 45s20.1 45 45 45 45-20.1 45-45S69.9 0 45 0zM45 74.5c-3.6 0-6.5-2.9-6.5-6.5s2.9-6.5 6.5-6.5 6.5 2.9 6.5 6.5S48.6 74.5 45 74.5zM52.1 23.9l-2.5 29.6c0 2.5-2.1 4.6-4.6 4.6 -2.5 0-4.6-2.1-4.6-4.6l-2.5-29.6c-0.1-0.4-0.1-0.7-0.1-1.1 0-4 3.2-7.2 7.2-7.2 4 0 7.2 3.2 7.2 7.2C52.2 23.1 52.2 23.5 52.1 23.9z"></path></svg></span></div> 正如集合大多數其它的方法一樣,<code class=" language-php">map</code> 返回一個新集合實例;它并沒有修改被調用的集合。假如你想改變原始的集合,得使用 <a href="#method-transform"><code class=" language-php">transform</code></a> 方法。</p></blockquote><p><a name="method-mapwithkeys"></a></p><h4 id="collection-method"><code class=" language-php"><span class="token function">mapWithKeys<span class="token punctuation">(</span></span><span class="token punctuation">)</span></code></h4><p>遍歷整個集合并將每一個數值傳入回調函數。回調函數返回包含一個鍵值對的關聯數組:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$collection</span> <span class="token operator">=</span> <span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span>
<span class="token punctuation">[</span>
<span class="token string">'name'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'John'</span><span class="token punctuation">,</span>
<span class="token string">'department'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'Sales'</span><span class="token punctuation">,</span>
<span class="token string">'email'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'john@example.com'</span>
<span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token punctuation">[</span>
<span class="token string">'name'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'Jane'</span><span class="token punctuation">,</span>
<span class="token string">'department'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'Marketing'</span><span class="token punctuation">,</span>
<span class="token string">'email'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'jane@example.com'</span>
<span class="token punctuation">]</span>
<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$keyed</span> <span class="token operator">=</span> <span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">mapWithKeys<span class="token punctuation">(</span></span><span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token variable">$item</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">return</span> <span class="token punctuation">[</span><span class="token variable">$item</span><span class="token punctuation">[</span><span class="token string">'email'</span><span class="token punctuation">]</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token variable">$item</span><span class="token punctuation">[</span><span class="token string">'name'</span><span class="token punctuation">]</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$keyed</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">all<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">/*
[
'john@example.com' => 'John',
'jane@example.com' => 'Jane',
]
*/</span></code></pre><p><a name="method-max"></a></p><h4 id="collection-method"><code class=" language-php"><span class="token function">max<span class="token punctuation">(</span></span><span class="token punctuation">)</span></code></h4><p>計算指定鍵的最大值:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$max</span> <span class="token operator">=</span> <span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span><span class="token punctuation">[</span><span class="token string">'foo'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token number">10</span><span class="token punctuation">]</span><span class="token punctuation">,</span> <span class="token punctuation">[</span><span class="token string">'foo'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token number">20</span><span class="token punctuation">]</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">max<span class="token punctuation">(</span></span><span class="token string">'foo'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// 20
</span>
<span class="token variable">$max</span> <span class="token operator">=</span> <span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">max<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// 5</span></code></pre><p><a name="method-merge"></a></p><h4 id="collection-method"><code class=" language-php"><span class="token function">merge<span class="token punctuation">(</span></span><span class="token punctuation">)</span></code></h4><p>合并數組進集合。數組「鍵」對應的數值會覆蓋集合「鍵」對應的數值:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$collection</span> <span class="token operator">=</span> <span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span><span class="token string">'product_id'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token string">'price'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token number">100</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$merged</span> <span class="token operator">=</span> <span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">merge<span class="token punctuation">(</span></span><span class="token punctuation">[</span><span class="token string">'price'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token number">200</span><span class="token punctuation">,</span> <span class="token string">'discount'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token boolean">false</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$merged</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">all<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// ['product_id' => 1, 'price' => 200, 'discount' => false]</span></code></pre><p>如果指定數組的「鍵」為數字,則「值」將會合并到集合的后面:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$collection</span> <span class="token operator">=</span> <span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span><span class="token string">'Desk'</span><span class="token punctuation">,</span> <span class="token string">'Chair'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$merged</span> <span class="token operator">=</span> <span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">merge<span class="token punctuation">(</span></span><span class="token punctuation">[</span><span class="token string">'Bookcase'</span><span class="token punctuation">,</span> <span class="token string">'Door'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$merged</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">all<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// ['Desk', 'Chair', 'Bookcase', 'Door']</span></code></pre><p><a name="method-min"></a></p><h4 id="collection-method"><code class=" language-php"><span class="token function">min<span class="token punctuation">(</span></span><span class="token punctuation">)</span></code></h4><p>計算指定「鍵」的最小值:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$min</span> <span class="token operator">=</span> <span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span><span class="token punctuation">[</span><span class="token string">'foo'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token number">10</span><span class="token punctuation">]</span><span class="token punctuation">,</span> <span class="token punctuation">[</span><span class="token string">'foo'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token number">20</span><span class="token punctuation">]</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">min<span class="token punctuation">(</span></span><span class="token string">'foo'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// 10
</span>
<span class="token variable">$min</span> <span class="token operator">=</span> <span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">min<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// 1</span></code></pre><p><a name="method-nth"></a></p><h4 id="collection-method"><code class=" language-php"><span class="token function">nth<span class="token punctuation">(</span></span><span class="token punctuation">)</span></code></h4><p>由每隔第 n 個元素組成一個新的集合:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$collection</span> <span class="token operator">=</span> <span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span><span class="token string">'a'</span><span class="token punctuation">,</span> <span class="token string">'b'</span><span class="token punctuation">,</span> <span class="token string">'c'</span><span class="token punctuation">,</span> <span class="token string">'d'</span><span class="token punctuation">,</span> <span class="token string">'e'</span><span class="token punctuation">,</span> <span class="token string">'f'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">nth<span class="token punctuation">(</span></span><span class="token number">4</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// ['a', 'e']</span></code></pre><p>你也可以選擇傳入一個偏移量作為第二個參數</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">nth<span class="token punctuation">(</span></span><span class="token number">4</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// ['b', 'f']</span></code></pre><p><a name="method-only"></a></p><h4 id="collection-method"><code class=" language-php"><span class="token function">only<span class="token punctuation">(</span></span><span class="token punctuation">)</span></code></h4><p>返回集合中指定鍵的所有項目:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$collection</span> <span class="token operator">=</span> <span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span><span class="token string">'product_id'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token string">'name'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'Desk'</span><span class="token punctuation">,</span> <span class="token string">'price'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token number">100</span><span class="token punctuation">,</span> <span class="token string">'discount'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token boolean">false</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$filtered</span> <span class="token operator">=</span> <span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">only<span class="token punctuation">(</span></span><span class="token punctuation">[</span><span class="token string">'product_id'</span><span class="token punctuation">,</span> <span class="token string">'name'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$filtered</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">all<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// ['product_id' => 1, 'name' => 'Desk']</span></code></pre><p>與 <code class=" language-php">only</code> 相反的方法請查看 <a href="#method-only">except</a>。</p><p><a name="method-partition"></a></p><h4 id="collection-method"><code class=" language-php"><span class="token function">partition<span class="token punctuation">(</span></span><span class="token punctuation">)</span></code></h4><p>結合 PHP 中的 <code class=" language-php">list</code> 方法來分開符合指定條件的元素以及那些不符合指定條件的元素:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$collection</span> <span class="token operator">=</span> <span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">,</span> <span class="token number">6</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token function">list<span class="token punctuation">(</span></span><span class="token variable">$underThree</span><span class="token punctuation">,</span> <span class="token variable">$aboveThree</span><span class="token punctuation">)</span> <span class="token operator">=</span> <span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">partition<span class="token punctuation">(</span></span><span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token variable">$i</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">return</span> <span class="token variable">$i</span> <span class="token operator"><</span> <span class="token number">3</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre><p><a name="method-pipe"></a></p><h4 id="collection-method"><code class=" language-php"><span class="token function">pipe<span class="token punctuation">(</span></span><span class="token punctuation">)</span></code></h4><p>將集合傳給回調函數并返回結果:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$collection</span> <span class="token operator">=</span> <span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$piped</span> <span class="token operator">=</span> <span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">pipe<span class="token punctuation">(</span></span><span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token variable">$collection</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">return</span> <span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">sum<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// 6</span></code></pre><p><a name="method-pluck"></a></p><h4 id="collection-method"><code class=" language-php"><span class="token function">pluck<span class="token punctuation">(</span></span><span class="token punctuation">)</span></code></h4><p>獲取集合中指定「鍵」所有對應的值:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$collection</span> <span class="token operator">=</span> <span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span>
<span class="token punctuation">[</span><span class="token string">'product_id'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'prod-100'</span><span class="token punctuation">,</span> <span class="token string">'name'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'Desk'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token punctuation">[</span><span class="token string">'product_id'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'prod-200'</span><span class="token punctuation">,</span> <span class="token string">'name'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'Chair'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$plucked</span> <span class="token operator">=</span> <span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">pluck<span class="token punctuation">(</span></span><span class="token string">'name'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$plucked</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">all<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// ['Desk', 'Chair']</span></code></pre><p>你也可以指定最終集合的鍵:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$plucked</span> <span class="token operator">=</span> <span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">pluck<span class="token punctuation">(</span></span><span class="token string">'name'</span><span class="token punctuation">,</span> <span class="token string">'product_id'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$plucked</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">all<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// ['prod-100' => 'Desk', 'prod-200' => 'Chair']</span></code></pre><p><a name="method-pop"></a></p><h4 id="collection-method"><code class=" language-php"><span class="token function">pop<span class="token punctuation">(</span></span><span class="token punctuation">)</span></code></h4><p>移除并返回集合最后一個項目:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$collection</span> <span class="token operator">=</span> <span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">pop<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// 5
</span>
<span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">all<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// [1, 2, 3, 4]</span></code></pre><p><a name="method-prepend"></a></p><h4 id="collection-method"><code class=" language-php"><span class="token function">prepend<span class="token punctuation">(</span></span><span class="token punctuation">)</span></code></h4><p>在集合前面增加一項數組的值:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$collection</span> <span class="token operator">=</span> <span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">prepend<span class="token punctuation">(</span></span><span class="token number">0</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">all<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// [0, 1, 2, 3, 4, 5]</span></code></pre><p>你可以傳遞第二個參數來設置新增加項的鍵:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$collection</span> <span class="token operator">=</span> <span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span><span class="token string">'one'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token string">'two'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token number">2</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">prepend<span class="token punctuation">(</span></span><span class="token number">0</span><span class="token punctuation">,</span> <span class="token string">'zero'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">all<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// ['zero' => 0, 'one' => 1, 'two' => 2]</span></code></pre><p><a name="method-pull"></a></p><h4 id="collection-method"><code class=" language-php"><span class="token function">pull<span class="token punctuation">(</span></span><span class="token punctuation">)</span></code></h4><p>把「鍵」對應的值從集合中移除并返回:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$collection</span> <span class="token operator">=</span> <span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span><span class="token string">'product_id'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'prod-100'</span><span class="token punctuation">,</span> <span class="token string">'name'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'Desk'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">pull<span class="token punctuation">(</span></span><span class="token string">'name'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// 'Desk'
</span>
<span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">all<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// ['product_id' => 'prod-100']</span></code></pre><p><a name="method-push"></a></p><h4 id="collection-method"><code class=" language-php"><span class="token function">push<span class="token punctuation">(</span></span><span class="token punctuation">)</span></code></h4><p>在集合的后面新添加一個元素:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$collection</span> <span class="token operator">=</span> <span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">push<span class="token punctuation">(</span></span><span class="token number">5</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">all<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// [1, 2, 3, 4, 5]</span></code></pre><p><a name="method-put"></a></p><h4 id="collection-method"><code class=" language-php"><span class="token function">put<span class="token punctuation">(</span></span><span class="token punctuation">)</span></code></h4><p>在集合內設置一個「鍵/值」:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$collection</span> <span class="token operator">=</span> <span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span><span class="token string">'product_id'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token string">'name'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'Desk'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">put<span class="token punctuation">(</span></span><span class="token string">'price'</span><span class="token punctuation">,</span> <span class="token number">100</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">all<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// ['product_id' => 1, 'name' => 'Desk', 'price' => 100]</span></code></pre><p><a name="method-random"></a></p><h4 id="collection-method"><code class=" language-php"><span class="token function">random<span class="token punctuation">(</span></span><span class="token punctuation">)</span></code></h4><p><code class=" language-php">random</code> 方法從集合中隨機返回一個項目:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$collection</span> <span class="token operator">=</span> <span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">random<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// 4 - (retrieved randomly)</span></code></pre><p>你可以選擇性地傳入一個整數到 <code class=" language-php">random</code>。如果該整數大于 <code class=" language-php"><span class="token number">1</span></code>,則會返回一個集合:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$random</span> <span class="token operator">=</span> <span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">random<span class="token punctuation">(</span></span><span class="token number">3</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$random</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">all<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// [2, 4, 5] - (retrieved randomly)</span></code></pre><p><a name="method-reduce"></a></p><h4 id="collection-method"><code class=" language-php"><span class="token function">reduce<span class="token punctuation">(</span></span><span class="token punctuation">)</span></code></h4><p><code class=" language-php">reduce</code> 方法將集合縮減到單個數值,該方法會將每次迭代的結果傳入到下一次迭代:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$collection</span> <span class="token operator">=</span> <span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$total</span> <span class="token operator">=</span> <span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">reduce<span class="token punctuation">(</span></span><span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token variable">$carry</span><span class="token punctuation">,</span> <span class="token variable">$item</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">return</span> <span class="token variable">$carry</span> <span class="token operator">+</span> <span class="token variable">$item</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// 6</span></code></pre><p>第一次迭代時 <code class=" language-php"><span class="token variable">$carry</span></code> 的數值為 <code class=" language-php"><span class="token keyword">null</span></code>;然而你也可以傳入第二個參數進 <code class=" language-php">reduce</code> 以指定它的初始值:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">reduce<span class="token punctuation">(</span></span><span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token variable">$carry</span><span class="token punctuation">,</span> <span class="token variable">$item</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">return</span> <span class="token variable">$carry</span> <span class="token operator">+</span> <span class="token variable">$item</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// 10</span></code></pre><p><a name="method-reject"></a></p><h4 id="collection-method"><code class=" language-php"><span class="token function">reject<span class="token punctuation">(</span></span><span class="token punctuation">)</span></code></h4><p><code class=" language-php">reject</code> 方法以指定的回調函數篩選集合。會移除掉那些通過判斷測試(即結果返回 <code class=" language-php"><span class="token boolean">true</span></code>)的項目:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$collection</span> <span class="token operator">=</span> <span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$filtered</span> <span class="token operator">=</span> <span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">reject<span class="token punctuation">(</span></span><span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token variable">$value</span><span class="token punctuation">,</span> <span class="token variable">$key</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">return</span> <span class="token variable">$value</span> <span class="token operator">></span> <span class="token number">2</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$filtered</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">all<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// [1, 2]</span></code></pre><p>與 <code class=" language-php">reject</code> 相反的方法可以查看 <a href="#method-filter"><code class=" language-php">filter</code></a> 方法。</p><p><a name="method-reverse"></a></p><h4 id="collection-method"><code class=" language-php"><span class="token function">reverse<span class="token punctuation">(</span></span><span class="token punctuation">)</span></code></h4><p><code class=" language-php">reverse</code> 方法倒轉集合內項目的順序:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$collection</span> <span class="token operator">=</span> <span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$reversed</span> <span class="token operator">=</span> <span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">reverse<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$reversed</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">all<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// [5, 4, 3, 2, 1]</span></code></pre><p><a name="method-search"></a></p><h4 id="collection-method"><code class=" language-php"><span class="token function">search<span class="token punctuation">(</span></span><span class="token punctuation">)</span></code></h4><p><code class=" language-php">search</code> 方法在集合內搜索指定的數值并返回找到的鍵。假如找不到項目,則返回 <code class=" language-php"><span class="token boolean">false</span></code>:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$collection</span> <span class="token operator">=</span> <span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span><span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">,</span> <span class="token number">6</span><span class="token punctuation">,</span> <span class="token number">8</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">search<span class="token punctuation">(</span></span><span class="token number">4</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// 1</span></code></pre><p>搜索是用「寬松」匹配來進行,也就是說如果字符串值是整數那它就跟這個整數是相等的。要使用嚴格匹配的話,就傳入 <code class=" language-php"><span class="token boolean">true</span></code> 為該方法的第二個參數:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">search<span class="token punctuation">(</span></span><span class="token string">'4'</span><span class="token punctuation">,</span> <span class="token boolean">true</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// false</span></code></pre><p>另外,你可以傳入你自己的回調函數來搜索第一個通過你判斷測試的項目:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">search<span class="token punctuation">(</span></span><span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token variable">$item</span><span class="token punctuation">,</span> <span class="token variable">$key</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">return</span> <span class="token variable">$item</span> <span class="token operator">></span> <span class="token number">5</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// 2</span></code></pre><p><a name="method-shift"></a></p><h4 id="collection-method"><code class=" language-php"><span class="token function">shift<span class="token punctuation">(</span></span><span class="token punctuation">)</span></code></h4><p><code class=" language-php">shift</code> 方法移除并返回集合的第一個項目:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$collection</span> <span class="token operator">=</span> <span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">shift<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// 1
</span>
<span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">all<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// [2, 3, 4, 5]</span></code></pre><p><a name="method-shuffle"></a></p><h4 id="collection-method"><code class=" language-php"><span class="token function">shuffle<span class="token punctuation">(</span></span><span class="token punctuation">)</span></code></h4><p><code class=" language-php">shuffle</code> 方法隨機排序集合的項目:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$collection</span> <span class="token operator">=</span> <span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$shuffled</span> <span class="token operator">=</span> <span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">shuffle<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$shuffled</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">all<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// [3, 2, 5, 1, 4] // (generated randomly)</span></code></pre><p><a name="method-slice"></a></p><h4 id="collection-method"><code class=" language-php"><span class="token function">slice<span class="token punctuation">(</span></span><span class="token punctuation">)</span></code></h4><p><code class=" language-php">slice</code> 方法返回集合從指定索引開始的一部分切片:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$collection</span> <span class="token operator">=</span> <span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">,</span> <span class="token number">6</span><span class="token punctuation">,</span> <span class="token number">7</span><span class="token punctuation">,</span> <span class="token number">8</span><span class="token punctuation">,</span> <span class="token number">9</span><span class="token punctuation">,</span> <span class="token number">10</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$slice</span> <span class="token operator">=</span> <span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">slice<span class="token punctuation">(</span></span><span class="token number">4</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$slice</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">all<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// [5, 6, 7, 8, 9, 10]</span></code></pre><p>如果你想限制返回切片的大小,就傳入想要的大小為方法的第二個參數:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$slice</span> <span class="token operator">=</span> <span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">slice<span class="token punctuation">(</span></span><span class="token number">4</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$slice</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">all<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// [5, 6]</span></code></pre><p>返回的切片將會保留原始鍵作為索引。假如你不希望保留原始的鍵,你可以使用 <code class=" language-php">values</code> 方法來重新建立索引。</p><p><a name="method-sort"></a></p><h4 id="collection-method"><code class=" language-php"><span class="token function">sort<span class="token punctuation">(</span></span><span class="token punctuation">)</span></code></h4><p>對集合排序。排序后的集合保留著原始數組的鍵,所以在這個例子里我們用 <a href="#method-values"><code class=" language-php">values</code></a> 方法來把鍵設置為連續數字的鍵。</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$collection</span> <span class="token operator">=</span> <span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span><span class="token number">5</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$sorted</span> <span class="token operator">=</span> <span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">sort<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$sorted</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">values<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">all<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// [1, 2, 3, 4, 5]</span></code></pre><p>假如你需要更高級的排序,你可以傳入回調函數以你自己的算法進行<code class=" language-php">排序</code>。參考 PHP 文檔的 <a href="http://php.net/manual/en/function.usort.php#refsect1-function.usort-parameters"><code class=" language-php">usort</code></a>,這是集合的 <code class=" language-php">sort</code> 方法在背后所調用的函數。</p><blockquote class="has-icon tip"><p><div class="flag"><span class="svg"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/" version="1.1" x="0px" y="0px" width="56.6px" height="87.5px" viewBox="0 0 56.6 87.5" enable-background="new 0 0 56.6 87.5" xml:space="preserve"><path fill="#FFFFFF" d="M28.7 64.5c-1.4 0-2.5-1.1-2.5-2.5v-5.7 -5V41c0-1.4 1.1-2.5 2.5-2.5s2.5 1.1 2.5 2.5v10.1 5 5.8C31.2 63.4 30.1 64.5 28.7 64.5zM26.4 0.1C11.9 1 0.3 13.1 0 27.7c-0.1 7.9 3 15.2 8.2 20.4 0.5 0.5 0.8 1 1 1.7l3.1 13.1c0.3 1.1 1.3 1.9 2.4 1.9 0.3 0 0.7-0.1 1.1-0.2 1.1-0.5 1.6-1.8 1.4-3l-2-8.4 -0.4-1.8c-0.7-2.9-2-5.7-4-8 -1-1.2-2-2.5-2.7-3.9C5.8 35.3 4.7 30.3 5.4 25 6.7 14.5 15.2 6.3 25.6 5.1c13.9-1.5 25.8 9.4 25.8 23 0 4.1-1.1 7.9-2.9 11.2 -0.8 1.4-1.7 2.7-2.7 3.9 -2 2.3-3.3 5-4 8L41.4 53l-2 8.4c-0.3 1.2 0.3 2.5 1.4 3 0.3 0.2 0.7 0.2 1.1 0.2 1.1 0 2.2-0.8 2.4-1.9l3.1-13.1c0.2-0.6 0.5-1.2 1-1.7 5-5.1 8.2-12.1 8.2-19.8C56.4 12 42.8-1 26.4 0.1zM43.7 69.6c0 0.5-0.1 0.9-0.3 1.3 -0.4 0.8-0.7 1.6-0.9 2.5 -0.7 3-2 8.6-2 8.6 -1.3 3.2-4.4 5.5-7.9 5.5h-4.1H28h-0.5 -3.6c-3.5 0-6.7-2.4-7.9-5.7l-0.1-0.4 -1.8-7.8c-0.4-1.1-0.8-2.1-1.2-3.1 -0.1-0.3-0.2-0.5-0.2-0.9 0.1-1.3 1.3-2.1 2.6-2.1H41C42.4 67.5 43.6 68.2 43.7 69.6zM37.7 72.5H26.9c-4.2 0-7.2 3.9-6.3 7.9 0.6 1.3 1.8 2.1 3.2 2.1h4.1 0.5 0.5 3.6c1.4 0 2.7-0.8 3.2-2.1L37.7 72.5z"></path></svg></span></div> 要排序嵌套數組或對象的集合,見 <a href="#method-sortby"><code class=" language-php">sortBy</code></a> 和 <a href="#method-sortbydesc"><code class=" language-php">sortByDesc</code></a> 方法。</p></blockquote><p><a name="method-sortby"></a></p><h4 id="collection-method"><code class=" language-php"><span class="token function">sortBy<span class="token punctuation">(</span></span><span class="token punctuation">)</span></code></h4><p>以指定的鍵排序集合。排序后的集合保留了原始數組鍵,所以在這個例子中我們用 <a href="#method-values"><code class=" language-php">values</code></a> method 把鍵設置為連續數字的索引建:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$collection</span> <span class="token operator">=</span> <span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span>
<span class="token punctuation">[</span><span class="token string">'name'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'Desk'</span><span class="token punctuation">,</span> <span class="token string">'price'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token number">200</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token punctuation">[</span><span class="token string">'name'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'Chair'</span><span class="token punctuation">,</span> <span class="token string">'price'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token number">100</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token punctuation">[</span><span class="token string">'name'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'Bookcase'</span><span class="token punctuation">,</span> <span class="token string">'price'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token number">150</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$sorted</span> <span class="token operator">=</span> <span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">sortBy<span class="token punctuation">(</span></span><span class="token string">'price'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$sorted</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">values<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">all<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">/*
[
['name' => 'Chair', 'price' => 100],
['name' => 'Bookcase', 'price' => 150],
['name' => 'Desk', 'price' => 200],
]
*/</span></code></pre><p>你也可以傳入自己的回調函數以決定如何排序集合數值:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$collection</span> <span class="token operator">=</span> <span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span>
<span class="token punctuation">[</span><span class="token string">'name'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'Desk'</span><span class="token punctuation">,</span> <span class="token string">'colors'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token punctuation">[</span><span class="token string">'Black'</span><span class="token punctuation">,</span> <span class="token string">'Mahogany'</span><span class="token punctuation">]</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token punctuation">[</span><span class="token string">'name'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'Chair'</span><span class="token punctuation">,</span> <span class="token string">'colors'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token punctuation">[</span><span class="token string">'Black'</span><span class="token punctuation">]</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token punctuation">[</span><span class="token string">'name'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'Bookcase'</span><span class="token punctuation">,</span> <span class="token string">'colors'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token punctuation">[</span><span class="token string">'Red'</span><span class="token punctuation">,</span> <span class="token string">'Beige'</span><span class="token punctuation">,</span> <span class="token string">'Brown'</span><span class="token punctuation">]</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$sorted</span> <span class="token operator">=</span> <span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">sortBy<span class="token punctuation">(</span></span><span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token variable">$product</span><span class="token punctuation">,</span> <span class="token variable">$key</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">return</span> <span class="token function">count<span class="token punctuation">(</span></span><span class="token variable">$product</span><span class="token punctuation">[</span><span class="token string">'colors'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$sorted</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">values<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">all<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">/*
[
['name' => 'Chair', 'colors' => ['Black']],
['name' => 'Desk', 'colors' => ['Black', 'Mahogany']],
['name' => 'Bookcase', 'colors' => ['Red', 'Beige', 'Brown']],
]
*/</span></code></pre><p><a name="method-sortbydesc"></a></p><h4 id="collection-method"><code class=" language-php"><span class="token function">sortByDesc<span class="token punctuation">(</span></span><span class="token punctuation">)</span></code></h4><p>與 <a href="#method-sortby"><code class=" language-php">sortBy</code></a> 有著一樣的形式,但是會以相反的順序來排序集合:</p><p><a name="method-splice"></a></p><h4 id="collection-method"><code class=" language-php"><span class="token function">splice<span class="token punctuation">(</span></span><span class="token punctuation">)</span></code></h4><p>返回從指定的索引開始的一小切片項目,原本集合也會被切除:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$collection</span> <span class="token operator">=</span> <span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$chunk</span> <span class="token operator">=</span> <span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">splice<span class="token punctuation">(</span></span><span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$chunk</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">all<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// [3, 4, 5]
</span>
<span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">all<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// [1, 2]</span></code></pre><p>你可以傳入第二個參數以限制大小:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$collection</span> <span class="token operator">=</span> <span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$chunk</span> <span class="token operator">=</span> <span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">splice<span class="token punctuation">(</span></span><span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$chunk</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">all<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// [3]
</span>
<span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">all<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// [1, 2, 4, 5]</span></code></pre><p>此外,你可以傳入含有新項目的第三個參數以取代集合中被移除的項目:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$collection</span> <span class="token operator">=</span> <span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$chunk</span> <span class="token operator">=</span> <span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">splice<span class="token punctuation">(</span></span><span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token punctuation">[</span><span class="token number">10</span><span class="token punctuation">,</span> <span class="token number">11</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$chunk</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">all<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// [3]
</span>
<span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">all<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// [1, 2, 10, 11, 4, 5]</span></code></pre><p><a name="method-split"></a></p><h4 id="collection-method"><code class=" language-php"><span class="token function">split<span class="token punctuation">(</span></span><span class="token punctuation">)</span></code></h4><p>將集合按指定組數分解:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$collection</span> <span class="token operator">=</span> <span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$groups</span> <span class="token operator">=</span> <span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">split<span class="token punctuation">(</span></span><span class="token number">3</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$groups</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">toArray<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// [[1, 2], [3, 4], [5]]</span></code></pre><p><a name="method-sum"></a></p><h4 id="collection-method"><code class=" language-php"><span class="token function">sum<span class="token punctuation">(</span></span><span class="token punctuation">)</span></code></h4><p>返回集合內所有項目的總和:</p><pre class=" language-php"><code class=" language-php"><span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">sum<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// 15</span></code></pre><p>如果集合包含嵌套數組或對象,你應該傳入一個「鍵」來指定要用哪些數值來計算總和:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$collection</span> <span class="token operator">=</span> <span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span>
<span class="token punctuation">[</span><span class="token string">'name'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'JavaScript: The Good Parts'</span><span class="token punctuation">,</span> <span class="token string">'pages'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token number">176</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token punctuation">[</span><span class="token string">'name'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'JavaScript: The Definitive Guide'</span><span class="token punctuation">,</span> <span class="token string">'pages'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token number">1096</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">sum<span class="token punctuation">(</span></span><span class="token string">'pages'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// 1272</span></code></pre><p>此外,你可以傳入自己的回調函數來決定要用哪些數值來計算總和:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$collection</span> <span class="token operator">=</span> <span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span>
<span class="token punctuation">[</span><span class="token string">'name'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'Chair'</span><span class="token punctuation">,</span> <span class="token string">'colors'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token punctuation">[</span><span class="token string">'Black'</span><span class="token punctuation">]</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token punctuation">[</span><span class="token string">'name'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'Desk'</span><span class="token punctuation">,</span> <span class="token string">'colors'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token punctuation">[</span><span class="token string">'Black'</span><span class="token punctuation">,</span> <span class="token string">'Mahogany'</span><span class="token punctuation">]</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token punctuation">[</span><span class="token string">'name'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'Bookcase'</span><span class="token punctuation">,</span> <span class="token string">'colors'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token punctuation">[</span><span class="token string">'Red'</span><span class="token punctuation">,</span> <span class="token string">'Beige'</span><span class="token punctuation">,</span> <span class="token string">'Brown'</span><span class="token punctuation">]</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">sum<span class="token punctuation">(</span></span><span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token variable">$product</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">return</span> <span class="token function">count<span class="token punctuation">(</span></span><span class="token variable">$product</span><span class="token punctuation">[</span><span class="token string">'colors'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// 6</span></code></pre><p><a name="method-take"></a></p><h4 id="collection-method"><code class=" language-php"><span class="token function">take<span class="token punctuation">(</span></span><span class="token punctuation">)</span></code></h4><p>返回有著指定數量項目的集合:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$collection</span> <span class="token operator">=</span> <span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$chunk</span> <span class="token operator">=</span> <span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">take<span class="token punctuation">(</span></span><span class="token number">3</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$chunk</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">all<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// [0, 1, 2]</span></code></pre><p>你也可以傳入負整數以獲取從集合后面來算指定數量的項目:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$collection</span> <span class="token operator">=</span> <span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$chunk</span> <span class="token operator">=</span> <span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">take<span class="token punctuation">(</span></span><span class="token operator">-</span><span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$chunk</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">all<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// [4, 5]</span></code></pre><p><a name="method-toarray"></a></p><h4 id="collection-method"><code class=" language-php"><span class="token function">toArray<span class="token punctuation">(</span></span><span class="token punctuation">)</span></code></h4><p>將集合轉換成純 PHP <code class=" language-php">數組</code>。假如集合的數值是 <a href="/docs/5.4/eloquent">Eloquent</a> 模型,也會被轉換成數組:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$collection</span> <span class="token operator">=</span> <span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span><span class="token string">'name'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'Desk'</span><span class="token punctuation">,</span> <span class="token string">'price'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token number">200</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">toArray<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">/*
[
['name' => 'Desk', 'price' => 200],
]
*/</span></code></pre><blockquote class="has-icon note"><p><div class="flag"><span class="svg"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/" version="1.1" x="0px" y="0px" width="90px" height="90px" viewBox="0 0 90 90" enable-background="new 0 0 90 90" xml:space="preserve"><path fill="#FFFFFF" d="M45 0C20.1 0 0 20.1 0 45s20.1 45 45 45 45-20.1 45-45S69.9 0 45 0zM45 74.5c-3.6 0-6.5-2.9-6.5-6.5s2.9-6.5 6.5-6.5 6.5 2.9 6.5 6.5S48.6 74.5 45 74.5zM52.1 23.9l-2.5 29.6c0 2.5-2.1 4.6-4.6 4.6 -2.5 0-4.6-2.1-4.6-4.6l-2.5-29.6c-0.1-0.4-0.1-0.7-0.1-1.1 0-4 3.2-7.2 7.2-7.2 4 0 7.2 3.2 7.2 7.2C52.2 23.1 52.2 23.5 52.1 23.9z"></path></svg></span></div> <code class=" language-php">toArray</code> 也會轉換所有內嵌的對象為數組。假如你希望獲取原本的底層數組,改用 <a href="#method-all"><code class=" language-php">all</code></a> 方法。</p></blockquote><p><a name="method-tojson"></a></p><h4 id="collection-method"><code class=" language-php"><span class="token function">toJson<span class="token punctuation">(</span></span><span class="token punctuation">)</span></code></h4><p>將集合轉換成 JSON:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$collection</span> <span class="token operator">=</span> <span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span><span class="token string">'name'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'Desk'</span><span class="token punctuation">,</span> <span class="token string">'price'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token number">200</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">toJson<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// '{"name":"Desk", "price":200}'</span></code></pre><p><a name="method-transform"></a></p><h4 id="collection-method"><code class=" language-php"><span class="token function">transform<span class="token punctuation">(</span></span><span class="token punctuation">)</span></code></h4><p>遍歷集合并對集合內每一個項目調用指定的回調函數。集合的項目將會被回調函數返回的數值取代掉:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$collection</span> <span class="token operator">=</span> <span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">transform<span class="token punctuation">(</span></span><span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token variable">$item</span><span class="token punctuation">,</span> <span class="token variable">$key</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">return</span> <span class="token variable">$item</span> <span class="token operator">*</span> <span class="token number">2</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">all<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// [2, 4, 6, 8, 10]</span></code></pre><blockquote class="has-icon note"><p><div class="flag"><span class="svg"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/" version="1.1" x="0px" y="0px" width="90px" height="90px" viewBox="0 0 90 90" enable-background="new 0 0 90 90" xml:space="preserve"><path fill="#FFFFFF" d="M45 0C20.1 0 0 20.1 0 45s20.1 45 45 45 45-20.1 45-45S69.9 0 45 0zM45 74.5c-3.6 0-6.5-2.9-6.5-6.5s2.9-6.5 6.5-6.5 6.5 2.9 6.5 6.5S48.6 74.5 45 74.5zM52.1 23.9l-2.5 29.6c0 2.5-2.1 4.6-4.6 4.6 -2.5 0-4.6-2.1-4.6-4.6l-2.5-29.6c-0.1-0.4-0.1-0.7-0.1-1.1 0-4 3.2-7.2 7.2-7.2 4 0 7.2 3.2 7.2 7.2C52.2 23.1 52.2 23.5 52.1 23.9z"></path></svg></span></div> 與大多數其它集合的方法不同,<code class=" language-php">transform</code> 會修改集合本身。如果你希望創建新集合,就改用 <a href="#method-map"><code class=" language-php">map</code></a> 方法。</p></blockquote><p><a name="method-union"></a></p><h4 id="collection-method"><code class=" language-php"><span class="token function">union<span class="token punctuation">(</span></span><span class="token punctuation">)</span></code></h4><p>將給定的數組合并到集合中,如果數組中含有與集合一樣的「鍵」,集合的鍵值會被保留:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$collection</span> <span class="token operator">=</span> <span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span><span class="token number">1</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token punctuation">[</span><span class="token string">'a'</span><span class="token punctuation">]</span><span class="token punctuation">,</span> <span class="token number">2</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token punctuation">[</span><span class="token string">'b'</span><span class="token punctuation">]</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$union</span> <span class="token operator">=</span> <span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">union<span class="token punctuation">(</span></span><span class="token punctuation">[</span><span class="token number">3</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token punctuation">[</span><span class="token string">'c'</span><span class="token punctuation">]</span><span class="token punctuation">,</span> <span class="token number">1</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token punctuation">[</span><span class="token string">'b'</span><span class="token punctuation">]</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$union</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">all<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// [1 => ['a'], 2 => ['b'], 3 => ['c']]</span></code></pre><p><a name="method-unique"></a></p><h4 id="collection-method"><code class=" language-php"><span class="token function">unique<span class="token punctuation">(</span></span><span class="token punctuation">)</span></code></h4><p><code class=" language-php">unique</code> 方法返回集合中所有唯一的項目。返回的集合保留著原始鍵,所以在這個例子中我們用 <a href="#method-values"><code class=" language-php">values</code></a> 方法來把鍵重置為連續數字的鍵。</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$collection</span> <span class="token operator">=</span> <span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$unique</span> <span class="token operator">=</span> <span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">unique<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$unique</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">values<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">all<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// [1, 2, 3, 4]</span></code></pre><p>當處理嵌套數組或對象的時候,你可以指定用來決定唯一性的鍵:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$collection</span> <span class="token operator">=</span> <span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span>
<span class="token punctuation">[</span><span class="token string">'name'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'iPhone 6'</span><span class="token punctuation">,</span> <span class="token string">'brand'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'Apple'</span><span class="token punctuation">,</span> <span class="token string">'type'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'phone'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token punctuation">[</span><span class="token string">'name'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'iPhone 5'</span><span class="token punctuation">,</span> <span class="token string">'brand'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'Apple'</span><span class="token punctuation">,</span> <span class="token string">'type'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'phone'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token punctuation">[</span><span class="token string">'name'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'Apple Watch'</span><span class="token punctuation">,</span> <span class="token string">'brand'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'Apple'</span><span class="token punctuation">,</span> <span class="token string">'type'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'watch'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token punctuation">[</span><span class="token string">'name'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'Galaxy S6'</span><span class="token punctuation">,</span> <span class="token string">'brand'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'Samsung'</span><span class="token punctuation">,</span> <span class="token string">'type'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'phone'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token punctuation">[</span><span class="token string">'name'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'Galaxy Gear'</span><span class="token punctuation">,</span> <span class="token string">'brand'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'Samsung'</span><span class="token punctuation">,</span> <span class="token string">'type'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'watch'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$unique</span> <span class="token operator">=</span> <span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">unique<span class="token punctuation">(</span></span><span class="token string">'brand'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$unique</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">values<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">all<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">/*
[
['name' => 'iPhone 6', 'brand' => 'Apple', 'type' => 'phone'],
['name' => 'Galaxy S6', 'brand' => 'Samsung', 'type' => 'phone'],
]
*/</span></code></pre><p>你可以傳入自己的回調函數來確定項目的唯一性:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$unique</span> <span class="token operator">=</span> <span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">unique<span class="token punctuation">(</span></span><span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token variable">$item</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">return</span> <span class="token variable">$item</span><span class="token punctuation">[</span><span class="token string">'brand'</span><span class="token punctuation">]</span><span class="token punctuation">.</span><span class="token variable">$item</span><span class="token punctuation">[</span><span class="token string">'type'</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$unique</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">values<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">all<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">/*
[
['name' => 'iPhone 6', 'brand' => 'Apple', 'type' => 'phone'],
['name' => 'Apple Watch', 'brand' => 'Apple', 'type' => 'watch'],
['name' => 'Galaxy S6', 'brand' => 'Samsung', 'type' => 'phone'],
['name' => 'Galaxy Gear', 'brand' => 'Samsung', 'type' => 'watch'],
]
*/</span></code></pre><p><a name="method-values"></a></p><h4 id="collection-method"><code class=" language-php"><span class="token function">values<span class="token punctuation">(</span></span><span class="token punctuation">)</span></code></h4><p>返回「鍵」重新被設為「連續整數」的新集合:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$collection</span> <span class="token operator">=</span> <span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span>
<span class="token number">10</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token punctuation">[</span><span class="token string">'product'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'Desk'</span><span class="token punctuation">,</span> <span class="token string">'price'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token number">200</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token number">11</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token punctuation">[</span><span class="token string">'product'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'Desk'</span><span class="token punctuation">,</span> <span class="token string">'price'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token number">200</span><span class="token punctuation">]</span>
<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$values</span> <span class="token operator">=</span> <span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">values<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$values</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">all<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">/*
[
0 => ['product' => 'Desk', 'price' => 200],
1 => ['product' => 'Desk', 'price' => 200],
]
*/</span></code></pre><p><a name="method-when"></a></p><h4 id="collection-method"><code class=" language-php"><span class="token function">when<span class="token punctuation">(</span></span><span class="token punctuation">)</span></code></h4><p>當第一個參數運算結果為 <code class=" language-php"><span class="token boolean">true</span></code> 的時候,會執行第二個參數傳入的閉包:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$collection</span> <span class="token operator">=</span> <span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">when<span class="token punctuation">(</span></span><span class="token boolean">true</span><span class="token punctuation">,</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token variable">$collection</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">return</span> <span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">push<span class="token punctuation">(</span></span><span class="token number">4</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">all<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// [1, 2, 3, 4]</span></code></pre><p><a name="method-where"></a></p><h4 id="collection-method"><code class=" language-php"><span class="token function">where<span class="token punctuation">(</span></span><span class="token punctuation">)</span></code></h4><p>以一對指定的「鍵/數值」篩選集合:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$collection</span> <span class="token operator">=</span> <span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span>
<span class="token punctuation">[</span><span class="token string">'product'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'Desk'</span><span class="token punctuation">,</span> <span class="token string">'price'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token number">200</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token punctuation">[</span><span class="token string">'product'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'Chair'</span><span class="token punctuation">,</span> <span class="token string">'price'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token number">100</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token punctuation">[</span><span class="token string">'product'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'Bookcase'</span><span class="token punctuation">,</span> <span class="token string">'price'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token number">150</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token punctuation">[</span><span class="token string">'product'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'Door'</span><span class="token punctuation">,</span> <span class="token string">'price'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token number">100</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$filtered</span> <span class="token operator">=</span> <span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">where<span class="token punctuation">(</span></span><span class="token string">'price'</span><span class="token punctuation">,</span> <span class="token number">100</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$filtered</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">all<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">/*
[
['product' => 'Chair', 'price' => 100],
['product' => 'Door', 'price' => 100],
]
*/</span></code></pre><p>比較數值的時候用了「寬松」匹配方式,查看 <a href="#method-wherestrict"><code class=" language-php">whereStrict</code></a> method來用嚴格比較的方式過濾。</p><p><a name="method-wherestrict"></a></p><h4 id="collection-method"><code class=" language-php"><span class="token function">whereStrict<span class="token punctuation">(</span></span><span class="token punctuation">)</span></code></h4><p>這個方法與 <a href="#method-where"><code class=" language-php">where</code></a> 方法有著一樣的形式;但是會以「嚴格」匹配來匹配數值:</p><p><a name="method-wherein"></a></p><h4 id="collection-method"><code class=" language-php"><span class="token function">whereIn<span class="token punctuation">(</span></span><span class="token punctuation">)</span></code></h4><p>基于參數中的鍵值數組進行過濾:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$collection</span> <span class="token operator">=</span> <span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span>
<span class="token punctuation">[</span><span class="token string">'product'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'Desk'</span><span class="token punctuation">,</span> <span class="token string">'price'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token number">200</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token punctuation">[</span><span class="token string">'product'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'Chair'</span><span class="token punctuation">,</span> <span class="token string">'price'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token number">100</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token punctuation">[</span><span class="token string">'product'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'Bookcase'</span><span class="token punctuation">,</span> <span class="token string">'price'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token number">150</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token punctuation">[</span><span class="token string">'product'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token string">'Door'</span><span class="token punctuation">,</span> <span class="token string">'price'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token number">100</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$filtered</span> <span class="token operator">=</span> <span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">whereIn<span class="token punctuation">(</span></span><span class="token string">'price'</span><span class="token punctuation">,</span> <span class="token punctuation">[</span><span class="token number">150</span><span class="token punctuation">,</span> <span class="token number">200</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$filtered</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">all<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">/*
[
['product' => 'Bookcase', 'price' => 150],
['product' => 'Desk', 'price' => 200],
]
*/</span></code></pre><p>此方法是用寬松的匹配,你可以使用 <a href="#method-whereinstrict"><code class=" language-php">whereInStrict</code></a> 做比較 <code class=" language-php">嚴格</code> 的匹配。</p><p><a name="method-whereinstrict"></a></p><h4 id="collection-method"><code class=" language-php"><span class="token function">whereInStrict<span class="token punctuation">(</span></span><span class="token punctuation">)</span></code></h4><p>此方法的使用于 <a href="#method-wherein"><code class=" language-php">whereIn</code></a> 方法類似,只是使用了比較 <code class=" language-php">嚴格</code> 的過濾。</p><p><a name="method-zip"></a></p><h4 id="collection-method"><code class=" language-php"><span class="token function">zip<span class="token punctuation">(</span></span><span class="token punctuation">)</span></code></h4><p><code class=" language-php">zip</code> 方法將集合與指定數組相同索引的值合并在一起:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$collection</span> <span class="token operator">=</span> <span class="token function">collect<span class="token punctuation">(</span></span><span class="token punctuation">[</span><span class="token string">'Chair'</span><span class="token punctuation">,</span> <span class="token string">'Desk'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$zipped</span> <span class="token operator">=</span> <span class="token variable">$collection</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">zip<span class="token punctuation">(</span></span><span class="token punctuation">[</span><span class="token number">100</span><span class="token punctuation">,</span> <span class="token number">200</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$zipped</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">all<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">
// [['Chair', 100], ['Desk', 200]]</span></code></pre><p><a name="higher-order-messages"></a></p><h2><a href="#higher-order-messages">高階信息傳遞</a></h2><p>集合也提供「高階信息傳遞支持」,這是對集合執行常見操作的快捷方式。支持高階信息傳遞的集合方法有: <code class=" language-php">contains</code>, <code class=" language-php">each</code>, <code class=" language-php">every</code>, <code class=" language-php">filter</code>, <code class=" language-php">first</code>, <code class=" language-php">map</code>, <code class=" language-php">partition</code>, <code class=" language-php">reject</code>, <code class=" language-php">sortBy</code>, <code class=" language-php">sortByDesc</code> 和 <code class=" language-php">sum</code>。</p><p>每個高階信息都能作為集合實例的動態屬性來訪問。例如,我們在集合中使用 <code class=" language-php">each</code> 高階信息傳遞方法拉哎對每個對象去調用一個方法:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$users</span> <span class="token operator">=</span> <span class="token scope">User<span class="token punctuation">::</span></span><span class="token function">where<span class="token punctuation">(</span></span><span class="token string">'votes'</span><span class="token punctuation">,</span> <span class="token string">'>'</span><span class="token punctuation">,</span> <span class="token number">500</span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">get<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$users</span><span class="token operator">-</span><span class="token operator">></span><span class="token property">each</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">markAsVip<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre><p>同樣,我們可以使用 <code class=" language-php">sum</code> 高階信息傳遞的方式來統計出集合中用戶總共的「投票數」:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$users</span> <span class="token operator">=</span> <span class="token scope">User<span class="token punctuation">::</span></span><span class="token function">where<span class="token punctuation">(</span></span><span class="token string">'group'</span><span class="token punctuation">,</span> <span class="token string">'Development'</span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">get<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">return</span> <span class="token variable">$users</span><span class="token operator">-</span><span class="token operator">></span><span class="token property">sum</span><span class="token operator">-</span><span class="token operator">></span><span class="token property">votes</span><span class="token punctuation">;</span></code></pre></article>
- 入門指南
- 安裝
- 配置信息
- 文件夾結構
- 請求周期
- 開發環境部署
- Valet
- Homestead
- 核心概念
- 服務提供者
- Facades
- Contracts
- 服務容器
- HTTP 層
- 路由
- 中間件
- CSRF 保護
- 控制器
- 請求
- 響應
- 視圖
- Session
- 表單驗證
- 前端
- Blade 模板
- 本地化
- 前端指南
- 編輯資源 Mix
- 安全
- API 認證
- 用戶認證
- 用戶授權
- 加密解密
- 哈希
- 重置密碼
- 數據庫
- 快速入門
- 查詢構造器
- 分頁
- 數據庫遷移
- Redis
- 數據填充
- Eloquent ORM
- Eloquent ORM快速入門
- 模型關聯
- Eloquent 集合
- 修改器
- 序列化
- 綜合話題
- Artisan 命令行
- 廣播系統
- 緩存系統
- 集合
- 錯誤與日志
- 事件系統
- 文件存儲
- 輔助函數
- 郵件發送
- 消息通知
- 擴展包開發
- 隊列
- 任務調度