# Фильтры массивов

Фильтры массивов изменяют вывод массивов.

### join <a href="#join" id="join"></a>

Объединяет элементы массива с символом, переданным в качестве параметра.&#x20;

Результатом является одна строка.

Пример:

```php
{{ fields | join: ', '}}
```

Вывод

```
Значение доп. поля 1, Значение доп. поля 2
```

Для многомерных массивов вторым параметром нужно указать значение массива, которое нужно выбрать.

Пример:

```php
{{ attributes | join: ", ", "name" }}

Суммы отгрузок: {{ demands | join: ", ", "sum" }}
Номера платежей: {{ payments | join: ", ", "name" }}
```

Вывод

```
Доп. поле1, Доп. поле2, Доп. поле 3

Суммы отгрузок: 1000, 2000, 3000
Номера платежей: 0001, 0002, 0003
```

### first <a href="#first" id="first"></a>

Возвращает первый элемент массива.

Пример:

```php
{{ fields | first }}
```

Вывод

```
Значение доп. поля 1
```

Для многомерных массивов вторым параметром нужно указать значение массива, которое нужно выбрать.

```php
{{ attributes | first: "value" }}

Сумма первой отгрузки: {{ demands | first: "sum" }}
Номер первого платежа: {{ payments | first: "name" }}
```

```
Значение доп. поля 1

Сумма первой отгрузки: 1000
Номер первого платежа: 0001
```

Вы можете использовать фильтр `first` через точку `.` после массива, когда вам нужно употребить его внутри [тега](https://bytehand.yooogi.ru/nastroika/yazyk-shablonov-liquid/tegi)

```php
{% if attributes.first.name == "Накладная" %}
  {{ attributes.first.value }}
{% endif %}

{{ fields.first }}
{{ attributes.first.name }}
{{ demands.first.sum }}
```

### last <a href="#last" id="last"></a>

Возвращает последний элемент массива.

Пример:

```
{{ fields | last }}
```

Вывод

```
Значение доп. поля 2
```

Для многомерных массивов вторым параметром нужно указать значение массива, которое нужно выбрать.

```php
{{ attributes | last: "value" }}

Сумма последней отгрузки: {{ demands | last: "sum" }}
Номер последего платежа: {{ payments | last: "name" }}
```

```
Значение доп. поля 2

Сумма последней отгрузки: 1000
Номер последнего платежа: 0003
```

Вы можете использовать фильтр `last` через точку `.` после массива, когда вам нужно употребить его внутри [тега](https://bytehand.yooogi.ru/nastroika/yazyk-shablonov-liquid/tegi)

```php
{% if attributes.last.name == "Накладная" %}
  {{ attributes.last.value }}
{% endif %}

{{ fields.last }}
{{ attributes.last.name }}
{{ demands.last.sum }}
```

### concat <a href="#concat" id="concat"></a>

Объединяет массив с другим массивом. Полученный массив содержит все элементы исходных массивов. `concat`не удалит повторяющиеся записи из объединенного массива, если вы также не используете [`uniq`](#uniq)фильтр.

Пример:

```php
{% assign fruits = "apples, oranges, peaches, tomatoes" | split: ", " %}
{% assign vegetables = "broccoli, carrots, lettuce, tomatoes" | split: ", " %}

{% assign plants = fruits | concat: vegetables %}

{{ plants | join: ", " }}
```

Вывод

```
apples, oranges, peaches, tomatoes, broccoli, carrots, lettuce, tomatoes
```

Вы можете объединить несколько `concat`фильтров для объединения более двух массивов:

Пример:

```php
{% assign operations = demands | concat: payments | concat: invoicesOut %}

Операции:
{% for oper in operations %}

{{ oper.meta.type}}: {{ oper.name }} - {{oper.sum }} -  {{oper.moment }}, 

{% endfor%}
```

Вывод

```
Операции:
demand: 00005 - 1000 - 07.04.2020, 
cashin: 00001 - 0 - 16.03.2020, 
paymentin: 00001 - 2000 - 16.03.2020, 
invoiceout: 00002 - 7000 - 18.03.2020,
```

### index

Возвращает элемент в указанном месте индекса в массиве. Обратите внимание, что нумерация массивов начинается с нуля, поэтому на первый элемент массива ссылаются с `[0]`.

Пример:

```php
{{ attributes[2].name }}
```

Вывод

```
Третье доп. поле
```

### map <a href="#map" id="map"></a>

Принимает атрибут элемента массива в качестве параметра и создает массив из значения каждого элемента массива.

Пример:

```php
{% assign demands_sum = demands | map: 'sum' %}

{% for sum in demands_sum %}
    {% assign total_sum = total_sum | plus: sum %}
{% endfor %}

Всего отгрузок на сумму: {{ total_sum }}
```

Вывод

```
Всего отгрузок на сумму: 1000
```

### reverse <a href="#reverse" id="reverse"></a>

Меняет порядок элементов в массиве.

Пример:

```
{% assign my_array = "apples, oranges, peaches, plums" | split: ", " %}

{{ my_array | reverse | join: ", " }}
```

Вывод

```
plums, peaches, oranges, apples
```

### size <a href="#size" id="size"></a>

Возвращает размер строки (количество символов) или массива (количество элементов).

Пример:

```
{{ 'The quick brown fox jumps over a lazy dog.' | size }}
```

Вывод

```
42
```

### sort <a href="#sort" id="sort"></a>

Сортирует элементы массива по заданному атрибуту элемента в массиве.копия

```php
{% assign products = positions | sort: 'price' %}
{% for product in products %}
  {{ product.price }}
{% endfor %}
```

Порядок отсортированного массива чувствителен к регистру.

### uniq <a href="#uniq" id="uniq"></a>

Удаляет любые повторяющиеся экземпляры элементов в массиве.

Пример:

```
{% assign fruits = "orange apple banana apple orange" %}
{{ fruits | split: ' ' | uniq | join: ' ' }}
```

Вывод

```
orange apple banana
```
