{"data":{"markdownRemark":{"frontmatter":{"title":"12* полезных методов в коллекциях laravel","date":"20 September 2018","path":"/12-polieznykh-mietodov-v-kolliektsiiakh-laravel/","author":null,"excerpt":null,"tags":["Linux","Collections"],"coverImage":{"childImageSharp":{"fluid":{"base64":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAJABQDASIAAhEBAxEB/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAIDAQT/xAAVAQEBAAAAAAAAAAAAAAAAAAAAAf/aAAwDAQACEAMQAAABk+xO4Ql//8QAGxAAAgEFAAAAAAAAAAAAAAAAAAIDAQQSITH/2gAIAQEAAQUCauCxtskLfh//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAEDAQE/AT//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAECAQE/AT//xAAcEAABAwUAAAAAAAAAAAAAAAAQAAESAjFRcaH/2gAIAQEABj8CjZsqPRVo/wD/xAAaEAACAgMAAAAAAAAAAAAAAAABEQBhICGR/9oACAEBAAE/IdQdlqoUPZPCjwZ//9oADAMBAAIAAwAAABBgD//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQMBAT8QP//EABURAQEAAAAAAAAAAAAAAAAAABBB/9oACAECAQE/EIf/xAAeEAEAAgICAwEAAAAAAAAAAAABADERIUFRYXGxwf/aAAgBAQABPxBsCBTBW2bB3srUwFGKja4Oe3vxNeZ9Mt9fkbn/2Q==","aspectRatio":2.1176470588235294,"src":"/static/89956cf9a0fe0acb82b5db797f19a8f4/b4295/photo-1529016587530-3210122452e7.jpg","srcSet":"/static/89956cf9a0fe0acb82b5db797f19a8f4/127d5/photo-1529016587530-3210122452e7.jpg 200w,\n/static/89956cf9a0fe0acb82b5db797f19a8f4/7ef6a/photo-1529016587530-3210122452e7.jpg 400w,\n/static/89956cf9a0fe0acb82b5db797f19a8f4/b4295/photo-1529016587530-3210122452e7.jpg 800w,\n/static/89956cf9a0fe0acb82b5db797f19a8f4/487eb/photo-1529016587530-3210122452e7.jpg 1080w","sizes":"(max-width: 800px) 100vw, 800px"}}}},"id":"553f9653-bb24-5777-93e6-aaffe340df59","html":"<p>Коллекции в Laravel прекрасный инструмент. Кроме того, что коллекцию можно создать через функцию хелпера <code class=\"language-text\">collect()</code>, Eloquent так же возвращает коллекцию.</p>\n<p>При составлении этого чарта было довольно сложно выделить наиболее любимые методы, ведь пользуюсь почти всем набором. Всё же я собрал небольшую статистику по нескольким проектам и выделил наиболее часто используемые и полезные.</p>\n<ul>\n<li>На самом деле их тут больше =)</li>\n</ul>\n<p>Для начала создадим коллекцию.</p>\n<div class=\"gatsby-highlight\" data-language=\"php\"><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><span class=\"token punctuation\">(</span><span class=\"token punctuation\">[</span>\n    <span class=\"token punctuation\">[</span> <span class=\"token single-quoted-string string\">'name'</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token single-quoted-string string\">'Laravel'</span><span class=\"token punctuation\">,</span> <span class=\"token single-quoted-string string\">'rating'</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 single-quoted-string string\">'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 punctuation\">,</span>\n    <span class=\"token punctuation\">[</span> <span class=\"token single-quoted-string string\">'name'</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token single-quoted-string string\">'CodeIgniter'</span><span class=\"token punctuation\">,</span> <span class=\"token single-quoted-string string\">'rating'</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 single-quoted-string string\">'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 punctuation\">,</span>\n    <span class=\"token punctuation\">[</span> <span class=\"token single-quoted-string string\">'name'</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token single-quoted-string string\">'Symfony'</span><span class=\"token punctuation\">,</span> <span class=\"token single-quoted-string string\">'rating'</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 single-quoted-string string\">'id'</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token number\">3</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">[</span> <span class=\"token single-quoted-string string\">'name'</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token single-quoted-string string\">'Zend Framework'</span> <span class=\"token punctuation\">,</span> <span class=\"token single-quoted-string string\">'rating'</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 single-quoted-string string\">'id'</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token number\">4</span><span class=\"token punctuation\">]</span>\n<span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p>Встречайте. Первое место чарта с небольшим отрывом от map - господин <strong>keyBy</strong></p>\n<h3>1. keyBy()</h3>\n<p>Метод которым я ну очень часто пользуюсь. Преобразует коллекцию так, что ключом становится указанное поле</p>\n<div class=\"gatsby-highlight\" data-language=\"php\"><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\">keyBy</span><span class=\"token punctuation\">(</span><span class=\"token single-quoted-string string\">'id'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    \n    <span class=\"token comment\">// результат</span>\n    Collection <span class=\"token punctuation\">{</span><span class=\"token shell-comment comment\">#1830 ▼</span>\n      <span class=\"token shell-comment comment\">#items: array:4 [▼</span>\n        <span class=\"token number\">1</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token keyword\">array</span><span class=\"token punctuation\">:</span><span class=\"token number\">3</span> <span class=\"token punctuation\">[</span>▼\n          <span class=\"token double-quoted-string string\">\"name\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token double-quoted-string string\">\"Laravel\"</span>\n          <span class=\"token double-quoted-string string\">\"rating\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token number\">10</span>\n          <span class=\"token double-quoted-string string\">\"id\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token number\">1</span>\n        <span class=\"token punctuation\">]</span>\n        <span class=\"token number\">2</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token keyword\">array</span><span class=\"token punctuation\">:</span><span class=\"token number\">3</span> <span class=\"token punctuation\">[</span>▼\n          <span class=\"token double-quoted-string string\">\"name\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token double-quoted-string string\">\"CodeIgniter\"</span>\n          <span class=\"token double-quoted-string string\">\"rating\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token number\">6</span>\n          <span class=\"token double-quoted-string string\">\"id\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token number\">2</span>\n        <span class=\"token punctuation\">]</span>\n        <span class=\"token number\">3</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token keyword\">array</span><span class=\"token punctuation\">:</span><span class=\"token number\">3</span> <span class=\"token punctuation\">[</span>▼\n          <span class=\"token double-quoted-string string\">\"name\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token double-quoted-string string\">\"Symfony\"</span>\n          <span class=\"token double-quoted-string string\">\"rating\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token number\">4</span>\n          <span class=\"token double-quoted-string string\">\"id\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token number\">3</span>\n        <span class=\"token punctuation\">]</span>\n        <span class=\"token number\">4</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token keyword\">array</span><span class=\"token punctuation\">:</span><span class=\"token number\">3</span> <span class=\"token punctuation\">[</span>▼\n          <span class=\"token double-quoted-string string\">\"name\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token double-quoted-string string\">\"Zend Framework\"</span>\n          <span class=\"token double-quoted-string string\">\"rating\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token number\">4</span>\n          <span class=\"token double-quoted-string string\">\"id\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token number\">4</span>\n        <span class=\"token punctuation\">]</span>\n      <span class=\"token punctuation\">]</span>\n    <span class=\"token punctuation\">}</span></code></pre></div>\n<p>Посмотрите что произошло, поле id стало ключом массива.</p>\n<h3>2. map() &#x26; transform()</h3>\n<p>Вторая группа методов, которыми пользуюсь не менее часто.</p>\n<p>Все методы перебирают коллекцию. Для обработки каждого элемента используется callback функция. В тело этой callback функции передаётся один элемент коллекции.</p>\n<div class=\"gatsby-highlight\" data-language=\"php\"><pre class=\"language-php\"><code class=\"language-php\">    <span class=\"token variable\">$result</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><span class=\"token punctuation\">(</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>\n        <span class=\"token variable\">$item</span><span class=\"token punctuation\">[</span><span class=\"token single-quoted-string string\">'rating'</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">*</span><span class=\"token operator\">=</span> <span class=\"token number\">2</span><span class=\"token punctuation\">;</span>\n        <span class=\"token keyword\">return</span> <span class=\"token variable\">$item</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    \n    <span class=\"token comment\">// результат</span>\n    Collection <span class=\"token punctuation\">{</span><span class=\"token shell-comment comment\">#1834 ▼</span>\n      <span class=\"token shell-comment comment\">#items: array:4 [▼</span>\n        <span class=\"token number\">0</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token keyword\">array</span><span class=\"token punctuation\">:</span><span class=\"token number\">3</span> <span class=\"token punctuation\">[</span>▼\n          <span class=\"token double-quoted-string string\">\"name\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token double-quoted-string string\">\"Laravel\"</span>\n          <span class=\"token double-quoted-string string\">\"rating\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token number\">20</span>\n          <span class=\"token double-quoted-string string\">\"id\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token number\">1</span>\n        <span class=\"token punctuation\">]</span>\n        <span class=\"token number\">1</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token keyword\">array</span><span class=\"token punctuation\">:</span><span class=\"token number\">3</span> <span class=\"token punctuation\">[</span>▶<span class=\"token punctuation\">]</span>\n        <span class=\"token number\">2</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token keyword\">array</span><span class=\"token punctuation\">:</span><span class=\"token number\">3</span> <span class=\"token punctuation\">[</span>▶<span class=\"token punctuation\">]</span>\n        <span class=\"token number\">3</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token keyword\">array</span><span class=\"token punctuation\">:</span><span class=\"token number\">3</span> <span class=\"token punctuation\">[</span>▶<span class=\"token punctuation\">]</span>\n      <span class=\"token punctuation\">]</span>\n    <span class=\"token punctuation\">}</span></code></pre></div>\n<p>В данном примере, мы умножили рейтинг на 2, а результат вернули.</p>\n<p>Метод transform() аналогичен map, с той лишь разницей, что не формирует новую коллекцию, а работает с текущей. Использую их попеременно, то map, то transform.</p>\n<h3>3. get() &#x26; has()</h3>\n<p>Эти методы я почти всегда использую в паре. has проверяет на наличие ключа, get возвращает элемент по имени ключа.</p>\n<div class=\"gatsby-highlight\" data-language=\"php\"><pre class=\"language-php\"><code class=\"language-php\">    <span class=\"token comment\">// для начала преобразуем нашу коллекцию.</span>\n    <span class=\"token variable\">$result</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><span class=\"token punctuation\">(</span><span class=\"token single-quoted-string string\">'name'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    \n    <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span><span class=\"token variable\">$result</span><span class=\"token operator\">-</span><span class=\"token operator\">></span><span class=\"token function\">has</span><span class=\"token punctuation\">(</span><span class=\"token single-quoted-string string\">'Other'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n        <span class=\"token function\">dd</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$result</span><span class=\"token operator\">-</span><span class=\"token operator\">></span><span class=\"token function\">get</span><span class=\"token punctuation\">(</span><span class=\"token single-quoted-string string\">'Other'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    \n    <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span><span class=\"token variable\">$result</span><span class=\"token operator\">-</span><span class=\"token operator\">></span><span class=\"token function\">has</span><span class=\"token punctuation\">(</span><span class=\"token single-quoted-string string\">'Laravel'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n        <span class=\"token function\">dd</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$result</span><span class=\"token operator\">-</span><span class=\"token operator\">></span><span class=\"token function\">get</span><span class=\"token punctuation\">(</span><span class=\"token single-quoted-string string\">'Laravel'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    \n    <span class=\"token comment\">// результат</span>\n    <span class=\"token keyword\">array</span><span class=\"token punctuation\">:</span><span class=\"token number\">3</span> <span class=\"token punctuation\">[</span>▼\n      <span class=\"token double-quoted-string string\">\"name\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token double-quoted-string string\">\"Laravel\"</span>\n      <span class=\"token double-quoted-string string\">\"rating\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token number\">10</span>\n      <span class=\"token double-quoted-string string\">\"id\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token number\">1</span>\n    <span class=\"token punctuation\">]</span></code></pre></div>\n<p>Кстати, раз уж зашла речь о методе get, напомню, что в laravel добавить элемент в коллекцию можно методом <code class=\"language-text\">push()</code> (Добавит в оригинальную коллекцию)</p>\n<div class=\"gatsby-highlight\" data-language=\"php\"><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\">push</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">[</span>\n        <span class=\"token single-quoted-string string\">'name'</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token single-quoted-string string\">'phalcon'</span><span class=\"token punctuation\">,</span>\n        <span class=\"token single-quoted-string string\">'rating'</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token number\">3</span><span class=\"token punctuation\">,</span>\n        <span class=\"token single-quoted-string string\">'id'</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token number\">5</span>\n    <span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    \n    <span class=\"token function\">dd</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$collection</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    \n    Collection <span class=\"token punctuation\">{</span><span class=\"token shell-comment comment\">#232 ▼</span>\n      <span class=\"token shell-comment comment\">#items: array:5 [▼</span>\n        <span class=\"token number\">0</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token keyword\">array</span><span class=\"token punctuation\">:</span><span class=\"token number\">3</span> <span class=\"token punctuation\">[</span>▶<span class=\"token punctuation\">]</span>\n        <span class=\"token number\">1</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token keyword\">array</span><span class=\"token punctuation\">:</span><span class=\"token number\">3</span> <span class=\"token punctuation\">[</span>▶<span class=\"token punctuation\">]</span>\n        <span class=\"token number\">2</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token keyword\">array</span><span class=\"token punctuation\">:</span><span class=\"token number\">3</span> <span class=\"token punctuation\">[</span>▶<span class=\"token punctuation\">]</span>\n        <span class=\"token number\">3</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token keyword\">array</span><span class=\"token punctuation\">:</span><span class=\"token number\">3</span> <span class=\"token punctuation\">[</span>▶<span class=\"token punctuation\">]</span>\n        <span class=\"token number\">4</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token keyword\">array</span><span class=\"token punctuation\">:</span><span class=\"token number\">3</span> <span class=\"token punctuation\">[</span>▼\n          <span class=\"token double-quoted-string string\">\"name\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token double-quoted-string string\">\"phalcon\"</span>\n          <span class=\"token double-quoted-string string\">\"rating\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token number\">3</span>\n          <span class=\"token double-quoted-string string\">\"id\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token number\">5</span>\n        <span class=\"token punctuation\">]</span>\n      <span class=\"token punctuation\">]</span>\n    <span class=\"token punctuation\">}</span></code></pre></div>\n<h3>4. sortBy() &#x26; sortByDesc()</h3>\n<p>Как видно из названия это сортировка, прямая и обратная соответственно.</p>\n<div class=\"gatsby-highlight\" data-language=\"php\"><pre class=\"language-php\"><code class=\"language-php\">    <span class=\"token variable\">$result</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><span class=\"token punctuation\">(</span><span class=\"token single-quoted-string string\">'name'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    \n    <span class=\"token function\">dd</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$result</span><span class=\"token punctuation\">,</span> <span class=\"token variable\">$collection</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    \n    <span class=\"token comment\">// Оригинальная коллекция</span>\n    Collection <span class=\"token punctuation\">{</span><span class=\"token shell-comment comment\">#1832 ▼</span>\n      <span class=\"token shell-comment comment\">#items: array:4 [▼</span>\n        <span class=\"token number\">0</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token keyword\">array</span><span class=\"token punctuation\">:</span><span class=\"token number\">3</span> <span class=\"token punctuation\">[</span>▼\n          <span class=\"token double-quoted-string string\">\"name\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token double-quoted-string string\">\"Laravel\"</span>\n          <span class=\"token double-quoted-string string\">\"rating\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token number\">10</span>\n          <span class=\"token double-quoted-string string\">\"id\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token number\">1</span>\n        <span class=\"token punctuation\">]</span>\n        <span class=\"token number\">1</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token keyword\">array</span><span class=\"token punctuation\">:</span><span class=\"token number\">3</span> <span class=\"token punctuation\">[</span>▼\n          <span class=\"token double-quoted-string string\">\"name\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token double-quoted-string string\">\"CodeIgniter\"</span>\n          <span class=\"token double-quoted-string string\">\"rating\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token number\">6</span>\n          <span class=\"token double-quoted-string string\">\"id\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token number\">2</span>\n        <span class=\"token punctuation\">]</span>\n        <span class=\"token number\">2</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token keyword\">array</span><span class=\"token punctuation\">:</span><span class=\"token number\">3</span> <span class=\"token punctuation\">[</span>▼\n          <span class=\"token double-quoted-string string\">\"name\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token double-quoted-string string\">\"Symfony\"</span>\n          <span class=\"token double-quoted-string string\">\"rating\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token number\">4</span>\n          <span class=\"token double-quoted-string string\">\"id\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token number\">3</span>\n        <span class=\"token punctuation\">]</span>\n        <span class=\"token number\">3</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token keyword\">array</span><span class=\"token punctuation\">:</span><span class=\"token number\">3</span> <span class=\"token punctuation\">[</span>▼\n          <span class=\"token double-quoted-string string\">\"name\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token double-quoted-string string\">\"Zend Framework\"</span>\n          <span class=\"token double-quoted-string string\">\"rating\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token number\">4</span>\n          <span class=\"token double-quoted-string string\">\"id\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token number\">4</span>\n        <span class=\"token punctuation\">]</span>\n      <span class=\"token punctuation\">]</span>\n    <span class=\"token punctuation\">}</span>\n    \n    <span class=\"token comment\">//Результат сортировки</span>\n    Collection <span class=\"token punctuation\">{</span><span class=\"token shell-comment comment\">#1834 ▼</span>\n      <span class=\"token shell-comment comment\">#items: array:4 [▼</span>\n        <span class=\"token number\">1</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token keyword\">array</span><span class=\"token punctuation\">:</span><span class=\"token number\">3</span> <span class=\"token punctuation\">[</span>▼\n          <span class=\"token double-quoted-string string\">\"name\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token double-quoted-string string\">\"CodeIgniter\"</span>\n          <span class=\"token double-quoted-string string\">\"rating\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token number\">6</span>\n          <span class=\"token double-quoted-string string\">\"id\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token number\">2</span>\n        <span class=\"token punctuation\">]</span>\n        <span class=\"token number\">0</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token keyword\">array</span><span class=\"token punctuation\">:</span><span class=\"token number\">3</span> <span class=\"token punctuation\">[</span>▼\n          <span class=\"token double-quoted-string string\">\"name\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token double-quoted-string string\">\"Laravel\"</span>\n          <span class=\"token double-quoted-string string\">\"rating\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token number\">10</span>\n          <span class=\"token double-quoted-string string\">\"id\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token number\">1</span>\n        <span class=\"token punctuation\">]</span>\n        <span class=\"token number\">2</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token keyword\">array</span><span class=\"token punctuation\">:</span><span class=\"token number\">3</span> <span class=\"token punctuation\">[</span>▼\n          <span class=\"token double-quoted-string string\">\"name\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token double-quoted-string string\">\"Symfony\"</span>\n          <span class=\"token double-quoted-string string\">\"rating\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token number\">4</span>\n          <span class=\"token double-quoted-string string\">\"id\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token number\">3</span>\n        <span class=\"token punctuation\">]</span>\n        <span class=\"token number\">3</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token keyword\">array</span><span class=\"token punctuation\">:</span><span class=\"token number\">3</span> <span class=\"token punctuation\">[</span>▼\n          <span class=\"token double-quoted-string string\">\"name\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token double-quoted-string string\">\"Zend Framework\"</span>\n          <span class=\"token double-quoted-string string\">\"rating\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token number\">4</span>\n          <span class=\"token double-quoted-string string\">\"id\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token number\">4</span>\n        <span class=\"token punctuation\">]</span>\n      <span class=\"token punctuation\">]</span>\n    <span class=\"token punctuation\">}</span></code></pre></div>\n<p>Обратите внимание что ключи сбились (1,0,2,3), что бы их привести в нормальный порядок можно воспользоваться методом values();</p>\n<div class=\"gatsby-highlight\" data-language=\"php\"><pre class=\"language-php\"><code class=\"language-php\">    <span class=\"token variable\">$result</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><span class=\"token punctuation\">(</span><span class=\"token single-quoted-string string\">'name'</span><span class=\"token punctuation\">)</span><span class=\"token operator\">-</span><span class=\"token operator\">></span><span class=\"token function\">values</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token function\">dd</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$result</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    \n    <span class=\"token comment\">// результат</span>\n    Collection <span class=\"token punctuation\">{</span><span class=\"token shell-comment comment\">#1835 ▼</span>\n      <span class=\"token shell-comment comment\">#items: array:4 [▼</span>\n        <span class=\"token number\">0</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token keyword\">array</span><span class=\"token punctuation\">:</span><span class=\"token number\">3</span> <span class=\"token punctuation\">[</span>▼\n          <span class=\"token double-quoted-string string\">\"name\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token double-quoted-string string\">\"CodeIgniter\"</span>\n          <span class=\"token double-quoted-string string\">\"rating\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token number\">6</span>\n          <span class=\"token double-quoted-string string\">\"id\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token number\">2</span>\n        <span class=\"token punctuation\">]</span>\n        <span class=\"token number\">1</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token keyword\">array</span><span class=\"token punctuation\">:</span><span class=\"token number\">3</span> <span class=\"token punctuation\">[</span>▼\n          <span class=\"token double-quoted-string string\">\"name\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token double-quoted-string string\">\"Laravel\"</span>\n          <span class=\"token double-quoted-string string\">\"rating\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token number\">10</span>\n          <span class=\"token double-quoted-string string\">\"id\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token number\">1</span>\n        <span class=\"token punctuation\">]</span>\n        <span class=\"token number\">2</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token keyword\">array</span><span class=\"token punctuation\">:</span><span class=\"token number\">3</span> <span class=\"token punctuation\">[</span>▼\n          <span class=\"token double-quoted-string string\">\"name\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token double-quoted-string string\">\"Symfony\"</span>\n          <span class=\"token double-quoted-string string\">\"rating\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token number\">4</span>\n          <span class=\"token double-quoted-string string\">\"id\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token number\">3</span>\n        <span class=\"token punctuation\">]</span>\n        <span class=\"token number\">3</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token keyword\">array</span><span class=\"token punctuation\">:</span><span class=\"token number\">3</span> <span class=\"token punctuation\">[</span>▼\n          <span class=\"token double-quoted-string string\">\"name\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token double-quoted-string string\">\"Zend Framework\"</span>\n          <span class=\"token double-quoted-string string\">\"rating\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token number\">4</span>\n          <span class=\"token double-quoted-string string\">\"id\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token number\">4</span>\n        <span class=\"token punctuation\">]</span>\n      <span class=\"token punctuation\">]</span>\n    <span class=\"token punctuation\">}</span></code></pre></div>\n<h3>5. groupBy()</h3>\n<p>Ещё один метод без которого я как без рук. Группирует коллекцию по указанному ключу.</p>\n<div class=\"gatsby-highlight\" data-language=\"php\"><pre class=\"language-php\"><code class=\"language-php\">    <span class=\"token function\">dd</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\">groupBy</span><span class=\"token punctuation\">(</span><span class=\"token single-quoted-string string\">'rating'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    \n    <span class=\"token comment\">// результат</span>\n    Collection <span class=\"token punctuation\">{</span><span class=\"token shell-comment comment\">#1837 ▼</span>\n      <span class=\"token shell-comment comment\">#items: array:3 [▼</span>\n        <span class=\"token number\">10</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> Collection <span class=\"token punctuation\">{</span><span class=\"token shell-comment comment\">#1834 ▼</span>\n          <span class=\"token shell-comment comment\">#items: array:1 [▼</span>\n            <span class=\"token number\">0</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token keyword\">array</span><span class=\"token punctuation\">:</span><span class=\"token number\">3</span> <span class=\"token punctuation\">[</span>▼\n              <span class=\"token double-quoted-string string\">\"name\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token double-quoted-string string\">\"Laravel\"</span>\n              <span class=\"token double-quoted-string string\">\"rating\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token number\">10</span>\n              <span class=\"token double-quoted-string string\">\"id\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token number\">1</span>\n            <span class=\"token punctuation\">]</span>\n          <span class=\"token punctuation\">]</span>\n        <span class=\"token punctuation\">}</span>\n        <span class=\"token number\">6</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> Collection <span class=\"token punctuation\">{</span><span class=\"token shell-comment comment\">#1835 ▼</span>\n          <span class=\"token shell-comment comment\">#items: array:1 [▼</span>\n            <span class=\"token number\">0</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token keyword\">array</span><span class=\"token punctuation\">:</span><span class=\"token number\">3</span> <span class=\"token punctuation\">[</span>▼\n              <span class=\"token double-quoted-string string\">\"name\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token double-quoted-string string\">\"CodeIgniter\"</span>\n              <span class=\"token double-quoted-string string\">\"rating\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token number\">6</span>\n              <span class=\"token double-quoted-string string\">\"id\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token number\">2</span>\n            <span class=\"token punctuation\">]</span>\n          <span class=\"token punctuation\">]</span>\n        <span class=\"token punctuation\">}</span>\n        <span class=\"token number\">4</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> Collection <span class=\"token punctuation\">{</span><span class=\"token shell-comment comment\">#1836 ▼</span>\n          <span class=\"token shell-comment comment\">#items: array:2 [▼</span>\n            <span class=\"token number\">0</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token keyword\">array</span><span class=\"token punctuation\">:</span><span class=\"token number\">3</span> <span class=\"token punctuation\">[</span>▼\n              <span class=\"token double-quoted-string string\">\"name\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token double-quoted-string string\">\"Symfony\"</span>\n              <span class=\"token double-quoted-string string\">\"rating\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token number\">4</span>\n              <span class=\"token double-quoted-string string\">\"id\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token number\">3</span>\n            <span class=\"token punctuation\">]</span>\n            <span class=\"token number\">1</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token keyword\">array</span><span class=\"token punctuation\">:</span><span class=\"token number\">3</span> <span class=\"token punctuation\">[</span>▼\n              <span class=\"token double-quoted-string string\">\"name\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token double-quoted-string string\">\"Zend Framework\"</span>\n              <span class=\"token double-quoted-string string\">\"rating\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token number\">4</span>\n              <span class=\"token double-quoted-string string\">\"id\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token number\">4</span>\n            <span class=\"token punctuation\">]</span>\n          <span class=\"token punctuation\">]</span>\n        <span class=\"token punctuation\">}</span>\n      <span class=\"token punctuation\">]</span>\n    <span class=\"token punctuation\">}</span></code></pre></div>\n<h3>6. where() &#x26;&#x26; contains()</h3>\n<p>Метод where фильтрует коллекцию по паре ключ => значение.</p>\n<div class=\"gatsby-highlight\" data-language=\"php\"><pre class=\"language-php\"><code class=\"language-php\">    <span class=\"token function\">dd</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\">where</span><span class=\"token punctuation\">(</span><span class=\"token single-quoted-string string\">'rating'</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>\n    \n\n    Collection <span class=\"token punctuation\">{</span><span class=\"token shell-comment comment\">#656 ▼</span>\n      <span class=\"token shell-comment comment\">#items: array:2 [▼</span>\n        <span class=\"token number\">2</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token keyword\">array</span><span class=\"token punctuation\">:</span><span class=\"token number\">3</span> <span class=\"token punctuation\">[</span>▼\n          <span class=\"token double-quoted-string string\">\"name\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token double-quoted-string string\">\"Symfony\"</span>\n          <span class=\"token double-quoted-string string\">\"rating\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token number\">4</span>\n          <span class=\"token double-quoted-string string\">\"id\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token number\">3</span>\n        <span class=\"token punctuation\">]</span>\n        <span class=\"token number\">3</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token keyword\">array</span><span class=\"token punctuation\">:</span><span class=\"token number\">3</span> <span class=\"token punctuation\">[</span>▼\n          <span class=\"token double-quoted-string string\">\"name\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token double-quoted-string string\">\"Zend Framework\"</span>\n          <span class=\"token double-quoted-string string\">\"rating\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token number\">4</span>\n          <span class=\"token double-quoted-string string\">\"id\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token number\">4</span>\n        <span class=\"token punctuation\">]</span>\n      <span class=\"token punctuation\">]</span>\n    <span class=\"token punctuation\">}</span></code></pre></div>\n<p>Но если вам необходимо просто проверить присутствует ли в коллекции нужная пара ключ-значение, то благоразумнее воспользоваться методом contains</p>\n<div class=\"gatsby-highlight\" data-language=\"php\"><pre class=\"language-php\"><code class=\"language-php\">        <span class=\"token function\">dd</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><span class=\"token punctuation\">(</span><span class=\"token single-quoted-string string\">'rating'</span><span class=\"token punctuation\">,</span> <span class=\"token single-quoted-string string\">'10'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n        <span class=\"token comment\">// вернёт true</span></code></pre></div>\n<p>Обратите внимание, что в качестве значения мы передаём строку, но тем не менее, метод возвратил true. Дело в том, что он использует не строгое (==) сравнение. Для строгого (===) сравнения, используйте containsStrict()</p>\n<div class=\"gatsby-highlight\" data-language=\"php\"><pre class=\"language-php\"><code class=\"language-php\">        <span class=\"token function\">dd</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\">containsStrict</span><span class=\"token punctuation\">(</span><span class=\"token single-quoted-string string\">'rating'</span><span class=\"token punctuation\">,</span> <span class=\"token single-quoted-string string\">'10'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n        <span class=\"token comment\">// тут уже вернёт false, тога как</span>\n        <span class=\"token function\">dd</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\">containsStrict</span><span class=\"token punctuation\">(</span><span class=\"token single-quoted-string string\">'rating'</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>\n        <span class=\"token comment\">// вернёт true</span></code></pre></div>\n<h3>7. filter()</h3>\n<p>Если нужно отбросить по какому-то условию часть коллекции, то filter предназначен именно для этого.</p>\n<p>Давайте найдём только те элементы, значения ключа rating которых больше либо равен шести.</p>\n<div class=\"gatsby-highlight\" data-language=\"php\"><pre class=\"language-php\"><code class=\"language-php\">    <span class=\"token variable\">$result</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><span class=\"token punctuation\">(</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>\n        <span class=\"token keyword\">return</span> <span class=\"token variable\">$item</span><span class=\"token punctuation\">[</span><span class=\"token single-quoted-string string\">'rating'</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">>=</span> <span class=\"token number\">6</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    \n    <span class=\"token function\">dd</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$result</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    \n\n    Collection <span class=\"token punctuation\">{</span><span class=\"token shell-comment comment\">#656 ▼</span>\n      <span class=\"token shell-comment comment\">#items: array:2 [▼</span>\n        <span class=\"token number\">0</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token keyword\">array</span><span class=\"token punctuation\">:</span><span class=\"token number\">3</span> <span class=\"token punctuation\">[</span>▼\n          <span class=\"token double-quoted-string string\">\"name\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token double-quoted-string string\">\"Laravel\"</span>\n          <span class=\"token double-quoted-string string\">\"rating\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token number\">10</span>\n          <span class=\"token double-quoted-string string\">\"id\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token number\">1</span>\n        <span class=\"token punctuation\">]</span>\n        <span class=\"token number\">1</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token keyword\">array</span><span class=\"token punctuation\">:</span><span class=\"token number\">3</span> <span class=\"token punctuation\">[</span>▼\n          <span class=\"token double-quoted-string string\">\"name\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token double-quoted-string string\">\"CodeIgniter\"</span>\n          <span class=\"token double-quoted-string string\">\"rating\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token number\">6</span>\n          <span class=\"token double-quoted-string string\">\"id\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token number\">2</span>\n        <span class=\"token punctuation\">]</span>\n      <span class=\"token punctuation\">]</span>\n    <span class=\"token punctuation\">}</span></code></pre></div>\n<h3>8. forget()</h3>\n<p>Как видно из названия заставляет <em>забыть</em> элемент коллекции, в аргументы передаётся имя ключа. Данный метод изменяет переданную в него коллекцию, а не возвращает новую.</p>\n<div class=\"gatsby-highlight\" data-language=\"php\"><pre class=\"language-php\"><code class=\"language-php\">    <span class=\"token function\">dd</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\">keyBy</span><span class=\"token punctuation\">(</span><span class=\"token single-quoted-string string\">'name'</span><span class=\"token punctuation\">)</span><span class=\"token operator\">-</span><span class=\"token operator\">></span><span class=\"token function\">forget</span><span class=\"token punctuation\">(</span><span class=\"token single-quoted-string string\">'Zend Framework'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// Символично, да?</span>\n    \n    <span class=\"token comment\">// Результат</span>\n    Collection <span class=\"token punctuation\">{</span><span class=\"token shell-comment comment\">#656 ▼</span>\n      <span class=\"token shell-comment comment\">#items: array:3 [▼</span>\n        <span class=\"token double-quoted-string string\">\"Laravel\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token keyword\">array</span><span class=\"token punctuation\">:</span><span class=\"token number\">3</span> <span class=\"token punctuation\">[</span>▼\n          <span class=\"token double-quoted-string string\">\"name\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token double-quoted-string string\">\"Laravel\"</span>\n          <span class=\"token double-quoted-string string\">\"rating\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token number\">10</span>\n          <span class=\"token double-quoted-string string\">\"id\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token number\">1</span>\n        <span class=\"token punctuation\">]</span>\n        <span class=\"token double-quoted-string string\">\"CodeIgniter\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token keyword\">array</span><span class=\"token punctuation\">:</span><span class=\"token number\">3</span> <span class=\"token punctuation\">[</span>▼\n          <span class=\"token double-quoted-string string\">\"name\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token double-quoted-string string\">\"CodeIgniter\"</span>\n          <span class=\"token double-quoted-string string\">\"rating\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token number\">6</span>\n          <span class=\"token double-quoted-string string\">\"id\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token number\">2</span>\n        <span class=\"token punctuation\">]</span>\n        <span class=\"token double-quoted-string string\">\"Symfony\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token keyword\">array</span><span class=\"token punctuation\">:</span><span class=\"token number\">3</span> <span class=\"token punctuation\">[</span>▼\n          <span class=\"token double-quoted-string string\">\"name\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token double-quoted-string string\">\"Symfony\"</span>\n          <span class=\"token double-quoted-string string\">\"rating\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token number\">4</span>\n          <span class=\"token double-quoted-string string\">\"id\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token number\">3</span>\n        <span class=\"token punctuation\">]</span>\n      <span class=\"token punctuation\">]</span>\n    <span class=\"token punctuation\">}</span></code></pre></div>\n<p>Обратите внимание, что здесь мы сначала воспользовались методом keyBy</p>\n<h3>9. chunk()</h3>\n<p>Устали от больших коллекций? Тогда chunk идёт к Вам.</p>\n<p>Разобьёт коллекцию на множество мелких коллекций.</p>\n<div class=\"gatsby-highlight\" data-language=\"php\"><pre class=\"language-php\"><code class=\"language-php\">    <span class=\"token function\">dd</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\">chunk</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>\n    \n    <span class=\"token comment\">// Результат</span>\n    Collection <span class=\"token punctuation\">{</span><span class=\"token shell-comment comment\">#659 ▼</span>\n      <span class=\"token shell-comment comment\">#items: array:2 [▼</span>\n        <span class=\"token number\">0</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> Collection <span class=\"token punctuation\">{</span><span class=\"token shell-comment comment\">#666 ▼</span>\n          <span class=\"token shell-comment comment\">#items: array:2 [▼</span>\n            <span class=\"token number\">0</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token keyword\">array</span><span class=\"token punctuation\">:</span><span class=\"token number\">3</span> <span class=\"token punctuation\">[</span>▼\n              <span class=\"token double-quoted-string string\">\"name\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token double-quoted-string string\">\"Laravel\"</span>\n              <span class=\"token double-quoted-string string\">\"rating\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token number\">10</span>\n              <span class=\"token double-quoted-string string\">\"id\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token number\">1</span>\n            <span class=\"token punctuation\">]</span>\n            <span class=\"token number\">1</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token keyword\">array</span><span class=\"token punctuation\">:</span><span class=\"token number\">3</span> <span class=\"token punctuation\">[</span>▼\n              <span class=\"token double-quoted-string string\">\"name\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token double-quoted-string string\">\"CodeIgniter\"</span>\n              <span class=\"token double-quoted-string string\">\"rating\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token number\">6</span>\n              <span class=\"token double-quoted-string string\">\"id\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token number\">2</span>\n            <span class=\"token punctuation\">]</span>\n          <span class=\"token punctuation\">]</span>\n        <span class=\"token punctuation\">}</span>\n        <span class=\"token number\">1</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> Collection <span class=\"token punctuation\">{</span><span class=\"token shell-comment comment\">#656 ▼</span>\n          <span class=\"token shell-comment comment\">#items: array:2 [▼</span>\n            <span class=\"token number\">2</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token keyword\">array</span><span class=\"token punctuation\">:</span><span class=\"token number\">3</span> <span class=\"token punctuation\">[</span>▼\n              <span class=\"token double-quoted-string string\">\"name\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token double-quoted-string string\">\"Symfony\"</span>\n              <span class=\"token double-quoted-string string\">\"rating\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token number\">4</span>\n              <span class=\"token double-quoted-string string\">\"id\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token number\">3</span>\n            <span class=\"token punctuation\">]</span>\n            <span class=\"token number\">3</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token keyword\">array</span><span class=\"token punctuation\">:</span><span class=\"token number\">3</span> <span class=\"token punctuation\">[</span>▼\n              <span class=\"token double-quoted-string string\">\"name\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token double-quoted-string string\">\"Zend Framework\"</span>\n              <span class=\"token double-quoted-string string\">\"rating\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token number\">4</span>\n              <span class=\"token double-quoted-string string\">\"id\"</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token number\">4</span>\n            <span class=\"token punctuation\">]</span>\n          <span class=\"token punctuation\">]</span>\n        <span class=\"token punctuation\">}</span>\n      <span class=\"token punctuation\">]</span>\n    <span class=\"token punctuation\">}</span></code></pre></div>\n<p>Аргумент указывает сколько в коллекции должно содержаться элементов, в нашем случае 2 элемента на коллекцию. Если укажем 1, то возвратит в нашем случае 4 коллекции.</p>\n<h3>10. pluck()</h3>\n<p>Вот ещё один полезный метод. Возвратит все значения ключей коллекции по указанному ключу.</p>\n<div class=\"gatsby-highlight\" data-language=\"php\"><pre class=\"language-php\"><code class=\"language-php\">    <span class=\"token function\">dd</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><span class=\"token punctuation\">(</span><span class=\"token single-quoted-string string\">'name'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    \n    <span class=\"token comment\">// Результат</span>\n    Collection <span class=\"token punctuation\">{</span><span class=\"token shell-comment comment\">#667 ▼</span>\n      <span class=\"token shell-comment comment\">#items: array:4 [▼</span>\n        <span class=\"token number\">0</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token double-quoted-string string\">\"Laravel\"</span>\n        <span class=\"token number\">1</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token double-quoted-string string\">\"CodeIgniter\"</span>\n        <span class=\"token number\">2</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token double-quoted-string string\">\"Symfony\"</span>\n        <span class=\"token number\">3</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token double-quoted-string string\">\"Zend Framework\"</span>\n      <span class=\"token punctuation\">]</span>\n    <span class=\"token punctuation\">}</span></code></pre></div>\n<h3>11. avg() &#x26; count()</h3>\n<p>Посчитать среднее значение, ну скажем к примеру рейтинга, поможет avg()</p>\n<div class=\"gatsby-highlight\" data-language=\"php\"><pre class=\"language-php\"><code class=\"language-php\">    <span class=\"token function\">dd</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\">avg</span><span class=\"token punctuation\">(</span><span class=\"token single-quoted-string string\">'rating'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    \n    <span class=\"token comment\">// Результат</span>\n    <span class=\"token number\">6</span>\n    <span class=\"token comment\">// (10 + 6 + 4 + 4) / 4</span></code></pre></div>\n<p>А вот общее количество элементов коллекции подскажет count()</p>\n<div class=\"gatsby-highlight\" data-language=\"php\"><pre class=\"language-php\"><code class=\"language-php\">    <span class=\"token function\">dd</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><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token comment\">// вернёт 4, хотя конечно можно и через обычный count</span>\n    <span class=\"token function\">dd</span><span class=\"token punctuation\">(</span><span class=\"token function\">count</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 punctuation\">;</span>\n    <span class=\"token comment\">// так же вернёт 4</span></code></pre></div>\n<h3>12. implode()</h3>\n<p>И закончим чарт методом implode. Думаю что тут так же из названия понятно, что метод объединяет элементы коллекции. Передаваемые в метод аргументы зависят от типа коллекции, если мы работаем с коллекцией объектов или массивов, то нужно передавать пару ключ-значение</p>\n<div class=\"gatsby-highlight\" data-language=\"php\"><pre class=\"language-php\"><code class=\"language-php\">    <span class=\"token function\">dd</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><span class=\"token punctuation\">(</span><span class=\"token single-quoted-string string\">'name'</span><span class=\"token punctuation\">,</span> <span class=\"token single-quoted-string string\">', '</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    \n    <span class=\"token comment\">// Результат</span>\n    <span class=\"token double-quoted-string string\">\"Laravel, CodeIgniter, Symfony, Zend Framework\"</span></code></pre></div>\n<p>Если коллекция сожержит строковые либо числовые значения, то потребуется только аргумент \"объединения\"</p>\n<div class=\"gatsby-highlight\" data-language=\"php\"><pre class=\"language-php\"><code class=\"language-php\">    <span class=\"token function\">dd</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\">pluck</span><span class=\"token punctuation\">(</span><span class=\"token single-quoted-string string\">'name'</span><span class=\"token punctuation\">)</span><span class=\"token operator\">-</span><span class=\"token operator\">></span><span class=\"token function\">implode</span><span class=\"token punctuation\">(</span><span class=\"token single-quoted-string string\">'-'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token double-quoted-string string\">\"Laravel-CodeIgniter-Symfony-Zend Framework\"</span></code></pre></div>\n<h3>Послесловие</h3>\n<p>Чтобы преобразовать коллекцию в массив нужно просто вызвать метод <code class=\"language-text\">toArray()</code></p>\n<div class=\"gatsby-highlight\" data-language=\"php\"><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\">toArray</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p>На этом всё.</p>\n<p>Делитесь статьёй в соцсетях, сохраняйте в закладки и пользуйтесь ;)</p>\n<p>Если вы хотети предложить статью, или стать автором на нашем сайте, пишите на <a href=\"mailto:public@softroot.ru\">public@softroot.ru</a></p>","excerpt":"Коллекции в Laravel прекрасный инструмент. Кроме того, что коллекцию можно создать через функцию хелпера  , Eloquent так же возвращает…"}},"pageContext":{"isCreatedByStatefulCreatePages":false,"type":"posts","next":{"frontmatter":{"path":"/khromoplaghiny-dlia-razrabotchika/","title":"14 Хромоплагинов для разработчика","tags":["Chrome","Extensions"]},"fileAbsolutePath":"/srv/www/softroot.ru/src/posts/2018-09-04-khromoplaghiny-dlia-razrabotchika.md"},"previous":{"frontmatter":{"path":"/tranzaktsii-v-laravel/","title":"Транзакции в Laravel","tags":["Linux","PHP","Lumen"]},"fileAbsolutePath":"/srv/www/softroot.ru/src/posts/tranzaktsii-v-laravel.md"}}}