Простая и элегантная обработка массивов PHP с использованием объекта коллекции, похожего на массив, предлагаемого jQuery и Laravel Collections.
композитор требует aimeos/map
Поддерживаемые версии PHP:
PHP 7.1+
PHP 8+
Оглавление
Почему PHP-карта
Список методов
Создавать
Доступ
Добавлять
Совокупный
Отлаживать
Заказ
Сократить
Тест
Мутировать
Разное
Документация
Пользовательские методы
Производительность
Руководство по обновлению
Вместо:
$list = [['id' => 'один', 'значение' => 'значение1'], ['id' => 'два', 'значение' => 'значение2'], null];$list[ ] = ['id' => 'три', 'значение' => 'значение3']; // добавляем elementunset($list[0]); // удаляем элемент $list = array_filter($list); // удаляем пустые значенияsort($list); // сортируем элементы $pairs = array_column($list, 'value', 'id'); // создаем ['three' => 'value3']$value = reset($pairs) ?: null; // возвращаем первое значение
Используйте только:
$list = [['id' => 'один', 'значение' => 'значение1'], ['id' => 'два', 'значение' => 'значение2'], null];$value = map( $list ) // создаем Map->push( ['id' => 'three', 'value' => 'value3'] ) // добавляем элемент->remove( 0 ) // удаляем элемент->фильтр () // удаляем пустое значения->sort() // сортируем элементы->col( 'value', 'id') // создаем ['three' => 'value3']->first(); // возвращаем первое значение
Вы все еще можете использовать:
$map[] = ['id' => 'три', 'value' => 'value3'];$value = $map[0];count( $map );foreach( $map as $key => значение );
Используйте обратные вызовы:
Кроме того, объект карты позволяет передавать анонимные функции множеству методов, например:
$map->each(function($val, $key) { echo $key . ': ' . $val; });
стиль jQuery:
Если элементы вашей карты являются объектами, вы можете вызвать их методы для каждого объекта и получить результат в виде новой карты, как в jQuery:
// MyClass реализует setStatus() (возвращает $this) и getCode() (инициализируется конструктором)$map = Map::from( ['a' => new MyClass( 'x'), 'b' => new MyClass ('y')]);$map->setStatus(1)->getCode()->toArray();
Это вызовет setStatus( 1 )
для обоих объектов. Если реализация setStatus()
возвращает $this
, новая карта также будет содержать:
['a' => MyClass(), 'b' => MyClass()]
Для этих новых элементов карты будет вызываться getCode()
, который возвращает x
для первого объекта и y
для второго. Карта, созданная по результатам getCode()
вернет:
['a' => 'x', 'b' => 'y']
функция карта функция is_map __call __callStatic __construct after all arsort asorted asorted at avg before bool вызов cast chunk очистить клон col коллапс объединить сравнение concat содержит счетчик копий countBy dd разделитель diff diffAssoc diffKeys dump дублирует каждый пустой равен каждому, кроме фильтра взрыва найти первый firstKey плоский переворот float from fromJson get getIterator grep groupBy имеет if ifAny ifEmpty реализуется в индексе InsertAfter InsertAt InsertBefore inString int intersect intersectAssoc intersectKeys isEmpty isNumeric isObject isScalar isString join jsonSerialize ключей krsort krsorted ksort Last LastKey ltrim Map max merge метод min none nth offsetExists offsetGet offsetSet offsetUnset only тянуть push put случайное уменьшить отклонить повторное ключ удалить заменить обратное обратное rsort rsorted rtrim поиск sep установить сдвиг в случайном порядке перетасовать пропустить фрагмент какой-то сортированный сращивание разделить strAfter strContains strContainsAll strEnds strEndsAll string strLower strReplace strStarts strStartsAll strUpper суффикс sum взять время касания toArray toJson toReversed toSorted toUrl преобразование транспонирования траверса обрезка дерева uasort uasorted uksort uksorted Union уникальный unshift usort usorted значения ходить куда с помощью zip
функция map(): создает новую карту из переданных элементов.
__construct() : Создаёт новую карту.
clone(): клонирует карту и все объекты внутри нее.
copy() : Создает новую копию.
взорваться(): разбивает строку на карту элементов.
from() : Создает новую карту из переданных элементов.
fromJson(): создает новую карту из строки JSON.
times() : Создает новую карту, вызывая замыкание несколько раз.
Tree(): создает древовидную структуру из элементов списка.
__call(): вызывает собственный метод.
__callStatic(): статически вызывает пользовательский метод.
all(): возвращает простой массив.
at(): возвращает значение в заданной позиции.
bool(): возвращает элемент по ключу и приводит его к логическому значению.
call(): вызывает указанный метод для всех элементов.
find(): возвращает первый/последний совпадающий элемент.
first(): возвращает первый элемент
firstKey(): возвращает первый ключ.
get(): возвращает элемент по ключу.
index(): возвращает числовой индекс данного ключа.
int(): возвращает элемент по ключу и преобразует его в целое число.
float(): возвращает элемент по ключу и переводит его в число с плавающей запятой.
keys() : возвращает все ключи
Last(): возвращает последний элемент
LastKey(): возвращает последний ключ.
pop(): возвращает и удаляет последний элемент.
pos(): возвращает числовой индекс значения.
pull(): возвращает и удаляет элемент по ключу.
random(): возвращает случайные элементы, сохраняя ключи.
search(): найти ключ элемента.
сдвиг(): возвращает и удаляет первый элемент.
string(): возвращает элемент по ключу и преобразует его в строку.
toArray(): возвращает простой массив.
unique(): возвращает все уникальные элементы, сохраняя ключи.
values(): возвращает все элементы с новыми ключами.
concat(): добавляет все элементы с новыми ключами.
InsertAfter(): вставляет значение после заданного элемента.
InsertAt(): вставляет элемент в заданную позицию на карте.
InsertBefore(): вставляет значение перед заданным элементом.
merge(): объединяет элементы, перезаписывая существующие.
Pad() : заполнить заданным значением до указанной длины.
prepend(): добавляет элемент в начало (псевдоним)
push(): добавляет элемент в конец
put() : устанавливает заданный ключ и значение на карте (псевдоним).
set(): перезаписывает или добавляет элемент.
Union(): добавляет элементы, не перезаписывая существующие.
unshift(): добавляет элемент в начало
with(): возвращает копию и устанавливает элемент
avg(): возвращает среднее значение всех значений.
count(): возвращает общее количество элементов.
countBy(): подсчитывает, как часто одни и те же значения встречаются на карте.
max(): возвращает максимальное значение всех элементов.
min(): возвращает минимальное значение всех элементов.
процент(): возвращает процент всех элементов, прошедших проверку.
sum(): возвращает сумму всех значений на карте.
dd(): печатает содержимое карты и завершает выполнение скрипта.
dump(): печатает содержимое карты.
Tap(): передает клон карты в заданный обратный вызов.
arsort(): элементы обратной сортировки с сохранением ключей.
arsorted(): элементы обратной сортировки, сохраняющие ключи в копии карты.
asort() : сортировка элементов с сохранением ключей.
asorted() : сортирует элементы, сохраняя ключи в копии карты.
krsort(): обратная сортировка элементов по ключам.
krsorted(): обратная сортировка элементов по ключам в копии карты.
ksort(): сортировка элементов по ключам.
order(): упорядочивает элементы по переданным ключам.
verse(): меняет порядок массива, сохраняя ключи.
Reverse(): меняет порядок элементов в копии карты.
toReversed() : меняет порядок элементов в копии карты (псевдоним)
rsort(): обратная сортировка элементов с использованием новых ключей.
rsorted(): обратная сортировка элементов с использованием новых ключей в копии карты.
shuffle(): меняет порядок элементов случайным образом.
shuffled(): рандомизирует порядок элементов в копии карты.
sort(): сортирует элементы на месте, назначая новые ключи.
sorted(): сортирует элементы в копии карты, используя новые ключи.
toSorted(): сортирует элементы в копии карты, используя новые ключи (псевдоним).
uasort(): сортирует элементы, сохраняя ключи, используя обратный вызов.
uasorted(): сортирует элементы, сохраняя ключи, используя обратный вызов в копии карты.
uksort(): сортирует элементы по ключам, используя обратный вызов.
uksorted(): сортирует элементы по ключам, используя обратный вызов в копии карты.
usort(): сортирует элементы с помощью обратного вызова, назначая новые ключи.
usorted(): сортирует элементы с помощью обратного вызова, назначая новые ключи в копии карты.
after(): возвращает элементы после заданного.
before(): возвращает элементы до заданного.
Clear(): удаляет все элементы.
diff(): возвращает элементы, отсутствующие в данном списке.
diffAssoc(): возвращает элементы, отсутствующие в данном списке, и проверяет ключи.
diffKeys(): возвращает элементы, отсутствующие в данном списке по ключам.
кроме(): возвращает новую карту без переданных ключей элемента.
filter(): применяет фильтр ко всем элементам.
grep(): применяет регулярное выражение ко всем элементам.
intersect(): возвращает общие элементы
intersectAssoc(): возвращает общие элементы и проверяет ключи.
intersectKeys(): возвращает элементы, общие для ключей.
nth(): возвращает каждый n-й элемент карты.
only(): возвращает только те элементы, которые указаны ключами.
pop(): возвращает и удаляет последний элемент.
pull(): возвращает и удаляет элемент по ключу.
ignore(): удаляет все совпавшие элементы.
Remove(): удаляет элемент по ключу.
сдвиг(): возвращает и удаляет первый элемент.
Skip(): пропускает заданное количество элементов и возвращает остальное.
срез(): возвращает фрагмент карты.
take(): возвращает новую карту с заданным количеством элементов.
where(): фильтрует список элементов по заданному условию.
функция is_map(): проверяет, является ли переменная объектом карты.
Compare(): сравнивает значение со всеми элементами карты.
contains(): проверяет, существует ли элемент на карте.
each(): применяет обратный вызов к каждому элементу.
пустой(): проверяет, пуста ли карта
Equals() : Проверяет, равно ли содержимое карты
Every(): проверяет, что все элементы прошли проверку данного обратного вызова.
has(): проверяет, существует ли ключ
if(): выполняет обратные вызовы в зависимости от условия
ifAny(): выполняет обратные вызовы, если карта содержит элементы.
ifEmpty(): выполняет обратные вызовы, если карта пуста.
in(): проверяет, включен ли элемент
include(): проверяет, включен ли элемент
inString(): проверяет, является ли элемент частью строк на карте.
is(): проверяет, состоит ли карта из одинаковых ключей и значений.
isEmpty(): проверяет, пуста ли карта.
isNumeric(): проверяет, являются ли все записи числовыми значениями.
isObject(): проверяет, являются ли все записи объектами.
isScalar(): проверяет, являются ли все записи скалярными значениями.
isString(): проверяет, являются ли все записи строковыми значениями.
impls() : Проверяет, являются ли все записи объектами, реализующими интерфейс.
none(): проверяет, не является ли ни один из элементов частью карты.
some(): проверяет, включен ли хотя бы один элемент
strContains(): проверяет, является ли хотя бы одна из переданных строк частью хотя бы одной записи.
strContainsAll(): проверяет, содержат ли все записи одну из переданных строк.
strEnds(): проверяет, заканчивается ли хотя бы одна из записей одной из переданных строк.
strEndsAll(): проверяет, заканчиваются ли все записи хотя бы одной из переданных строк.
strStarts(): проверяет, начинается ли хотя бы одна из записей хотя бы с одной из переданных строк.
strStartsAll(): проверяет, начинаются ли все записи с одной из переданных строк.
cast(): приводит все записи к переданному типу.
chunk(): разбивает карту на фрагменты.
col(): создает сопоставление ключ/значение.
коллапс(): сворачивает многомерные элементы, перезаписывая элементы.
Комбайн(): объединяет элементы карты как ключи с заданными значениями.
Flat(): выравнивает многомерные элементы без перезаписи элементов.
Flip(): обменивает ключи на их значения.
groupBy(): группирует элементы или объекты ассоциативного массива.
join(): возвращает объединенные элементы в виде строки с разделителем.
ltrim(): удаляет переданные символы слева от всех строк.
map(): применяет обратный вызов к каждому элементу и возвращает результаты.
partition(): разбивает список на заданное количество групп.
Pipe(): применяет обратный вызов ко всей карте.
pluck() : Создает сопоставление ключ/значение (псевдоним).
prefix(): добавляет префикс к каждой записи карты.
уменьшить(): вычисляет одно значение из содержимого карты.
rekey(): меняет клавиши в соответствии с переданной функцией.
replace(): рекурсивно заменяет элементы.
rtrim(): удаляет переданные символы справа от всех строк.
splice(): заменяет фрагмент новыми элементами.
strAfter(): возвращает строки после переданного значения.
strLower(): преобразует все буквенные символы в нижний регистр.
strReplace(): заменяет все вхождения строки поиска строкой замены.
strUpper(): преобразует все буквенные символы в верхний регистр.
suffix(): добавляет суффикс к каждой записи карты.
toJson(): возвращает элементы в формате JSON.
toUrl(): создает строку HTTP-запроса.
transfrom(): применяет обратный вызов к каждому элементу, который создает новые пары ключ/значение.
transpose(): меняет местами строки и столбцы на двумерную карту.
traverse(): обходит деревья вложенных элементов, передавая каждый элемент обратному вызову.
Trim(): удаляет переданные символы слева/справа от всех строк.
walk(): применяет заданный обратный вызов ко всем элементам.
zip(): объединяет значения всех массивов по соответствующему индексу.
delimiter(): устанавливает или возвращает разделитель путей к многомерным массивам.
getIterator(): возвращает итератор для элементов.
jsonSerialize(): указывает данные, которые должны быть сериализованы в JSON.
метод(): регистрирует собственный метод.
offsetExists(): проверяет, существует ли ключ.
offsetGet(): возвращает элемент по ключу.
offsetSet(): перезаписывает элемент.
offsetUnset(): удаляет элемент по ключу.
sep(): устанавливает разделитель для путей к многомерным массивам на текущей карте.
Проверяет, является ли переменная объектом карты
функция is_map($var): bool
@param смешанная переменная $var
для проверки
Примеры:
is_map(new Map());// trueis_map( []);// false
Возвращает новую карту для переданных элементов.
карта функции ($elements = []): AimeosMap
@param Mixed $elements
Список элементов или одно значение
@return Экземпляр карты AimeosMap
Примеры:
// arraymap( [] );// nullmap( null );// scalarmap( 'a' );// карта объекта( new stdClass() );// карта объектаmap( new Map() );// итерируемая карта объекта( new ArrayObject() );// закрытие оценивается lazilymap( function() {return []; });
См. также:
rekey() — меняет клавиши в соответствии с переданной функцией
Transform() — создает новые пары ключ/значение, используя переданную функцию, и возвращает новую карту для результата.
Создает новый объект карты.
публичная функция __construct($elements = [])
@param mix $elements
Одиночный элемент, список элементов, объект Map, итерируемые объекты или итераторы, все остальное
Примеры:
// arraynew Map( [] );// nullnew Map( null );// scalarnew Map( 'a'); // objectnew Map( new stdClass() );// Map objectnew Map( new Map() ); // итерируемый объектnew Map( new ArrayObject() ); // оценивается замыкание lazilynew Map( function() {return []; });
Обрабатывает динамические вызовы пользовательских методов класса.
публичная функция __call (строка $name, массив $params)
@param string $name
Имя метода
@param array<mixed> $params
Список параметров
@return mix Результат вызванной функции или новая карта с результатами методов элемента
Вызывает собственный метод, добавленный Map::method(). Вызванный метод имеет доступ к внутреннему массиву с помощью $this->items
.
Примеры:
Map::method( 'case', function( $case = CASE_LOWER ) {return new self( array_change_key_case( $this->items, $case ) ); }); Map::from( ['a' => 'bar'] )->case( CASE_UPPER );// ['A' => 'bar']
Это также позволяет вызывать методы объекта, если элементы являются объектами:
$item = новый MyClass(); // с помощью метода setStatus() (возвращающего $this) и getCode(), реализованногоMap::from( [$item, $item] )->setStatus( 1 )->getCode()->toArray();
Это вызовет метод setStatus()
каждого элемента на карте и будет использовать возвращаемые значения для создания новой карты. На новой карте метод getCode()
вызывается для каждого элемента, и его возвращаемые значения также сохраняются на новой карте. Затем эта последняя карта возвращается, и ключи карты исходной карты сохраняются в возвращенной карте.
Если элементы не являются объектами, они пропускаются, а если это относится ко всем элементам, возвращается пустая карта. Если карта содержит объекты смешанных типов и один из них не реализует вызываемый метод, будет выдана ошибка.
Обрабатывает статические вызовы пользовательских методов класса.
общедоступная статическая функция __callStatic(строка $name, массив $params)
@param string $name
Имя метода
@param array<mixed> $params
Список параметров
@return mix Результат вызванной функции или новая карта с результатами методов элемента
@throws BadMethodCallException Если для этого имени не зарегистрирован метод
Статически вызывает пользовательский метод, добавленный Map::method(). Вызванный метод не имеет доступа к внутреннему массиву, поскольку объект недоступен.
Примеры:
Map::method( 'foo', function( $arg1, $arg2 ) {} ); Map::foo($arg1, $arg2);
Возвращает элементы после заданного.
публичная функция after($value): self
@param Closure|int|string $value
Значение или функция с параметрами (элемент, ключ)
@return self<int|string,mixed> Новая карта с элементами после заданного
Ключи сохраняются с помощью этого метода.
Примеры:
Map::from( [0 => 'b', 1 => 'a'] )->after( 'b' );// [1 => 'a']Map::from( ['a' = > 1, 'b' => 0] )->after( 1 );// ['b' => 0]Map::from( [0 => 'b', 1 => 'a'] )- >после( 'с' );// []Map::from( ['a', 'c', 'b'] )->after( function( $item, $key ) {return $item >= 'c'; } );// [2 => 'b']
Возвращает элементы в виде простого массива.
публичная функция all(): массив
@return array Обычный массив
Примеры:
Map::from( ['a'] )->all();// ['a']
Сортирует все элементы в обратном порядке и сохраняет ключевую связь.
публичная функция arsort(int $options = SORT_REGULAR): self
@param int $options
Опции сортировки для arsort()
@return self<int|string,mixed> Обновлена карта для гибкого интерфейса.
С помощью этого метода ключи сохраняются, и новая карта не создается.
Параметр $options
изменяет способ сравнения значений. Возможные значения параметра:
SORT_REGULAR: обычно сравнивать элементы (не менять типы)
SORT_NUMERIC: сравнить элементы численно
SORT_STRING: сравнить элементы как строки
SORT_LOCALE_STRING: сравнение элементов как строк на основе текущей локали или измененных с помощью setlocale()
SORT_NATURAL: сравнивать элементы как строки, используя «естественный порядок», например natsort()
SORT_FLAG_CASE: используйте SORT_STRING|SORT_FLAG_CASE и SORT_NATURAL|SORT_FLAG_CASE для сортировки строк без учета регистра.
Примеры:
Map::from( ['b' => 0, 'a' => 1] )->arsort();// ['a' => 1, 'b' => 0]Map::from( [ 'a', 'b'] )->arsort();// ['b', 'a']Map::from( [0 => 'C', 1 => 'b'] )->arsort();// [1 => 'b', 0 => 'C']Map::from( [0 => 'C', 1 => 'b'] )->arsort( SORT_STRING |SORT_FLAG_CASE );// [0 => 'C', 1 => 'b'] потому что 'C' -> 'c' и 'c' > 'b'
Сортирует копию всех элементов в обратном порядке и сохраняет связь ключей.
публичная функция asorted(int $options = SORT_REGULAR): self
@param int $options
Опции сортировки для arsort()
@return self<int|string,mixed> Обновлена карта для гибкого интерфейса.
С помощью этого метода сохраняются ключи и создается новая карта.
Параметр $options
изменяет способ сравнения значений. Возможные значения параметра:
SORT_REGULAR: обычно сравнивать элементы (не менять типы)
SORT_NUMERIC: сравнить элементы численно
SORT_STRING: сравнить элементы как строки
SORT_LOCALE_STRING: сравнение элементов как строк на основе текущей локали или измененных с помощью setlocale()
SORT_NATURAL: сравнивать элементы как строки, используя «естественный порядок», например natsort()
SORT_FLAG_CASE: используйте SORT_STRING|SORT_FLAG_CASE и SORT_NATURAL|SORT_FLAG_CASE для сортировки строк без учета регистра.
Примеры:
Map::from( ['b' => 0, 'a' => 1] )->arsorted();// ['a' => 1, 'b' => 0]Map::from( [ 'a', 'b'] )->arsorted();// ['b', 'a']Map::from( [0 => 'C', 1 => 'b'] )->arsorted();// [1 => 'b', 0 => 'C']Map::from( [0 => 'C', 1 => 'b'] )->arsorted( SORT_STRING |SORT_FLAG_CASE );// [0 => 'C', 1 => 'b'] потому что 'C' -> 'c' и 'c' > 'b'
Сортирует все элементы и сохраняет ключевую ассоциацию.
публичная функция asort(int $options = SORT_REGULAR): self
@param int $options
Опции сортировки для asort()
@return self<int|string,mixed> Обновлена карта для гибкого интерфейса.
С помощью этого метода ключи сохраняются, и новая карта не создается.
Параметр изменяет способ сравнения значений. Возможные значения параметра:
SORT_REGULAR: обычно сравнивать элементы (не менять типы)
SORT_NUMERIC: сравнить элементы численно
SORT_STRING: сравнить элементы как строки
SORT_LOCALE_STRING: сравнение элементов как строк на основе текущей локали или измененных с помощью setlocale()
SORT_NATURAL: сравнивать элементы как строки, используя «естественный порядок», например natsort()
SORT_FLAG_CASE: используйте SORT_STRING|SORT_FLAG_CASE и SORT_NATURAL|SORT_FLAG_CASE для сортировки строк без учета регистра.
Примеры:
Map::from( ['a' => 1, 'b' => 0] )->asort();// ['b' => 0, 'a' => 1]Map::from( [ 0 => 'b', 1 => 'a'] )->asort();// [1 => 'a', 0 => 'b']Map::from( [0 => 'C' , 1 => 'b'] )->asort();// [0 => 'C', 1 => 'b'] потому что 'C' < 'b'Map::from( [0 => 'C', 1 => 'b'] )->arsort( SORT_STRING|SORT_FLAG_CASE );// [1 => 'b', 0 => 'C'] потому что 'C' -> 'c' и 'c' > 'б'
Сортирует копии всех элементов и сохраняет ключевую ассоциацию.
общедоступная функция сортирована (int $options = SORT_REGULAR): self
@param int $options
Опции сортировки для asort()
@return self<int|string,mixed> Обновлена карта для гибкого интерфейса.
С помощью этого метода сохраняются ключи и создается новая карта.
Параметр изменяет способ сравнения значений. Возможные значения параметра:
SORT_REGULAR: обычно сравнивать элементы (не менять типы)
SORT_NUMERIC: сравнить элементы численно
SORT_STRING: сравнить элементы как строки
SORT_LOCALE_STRING: сравнение элементов как строк на основе текущей локали или измененных с помощью setlocale()
SORT_NATURAL: сравнивать элементы как строки, используя «естественный порядок», например natsort()
SORT_FLAG_CASE: используйте SORT_STRING|SORT_FLAG_CASE и SORT_NATURAL|SORT_FLAG_CASE для сортировки строк без учета регистра.
Примеры:
Map::from( ['a' => 1, 'b' => 0] )->asorted();// ['b' => 0, 'a' => 1]Map::from( [ 0 => 'b', 1 => 'a'] )->asorted();// [1 => 'a', 0 => 'b']Map::from( [0 => 'C' , 1 => 'b'] )->asorted();// [0 => 'C', 1 => 'b'] потому что 'C' < 'b'Map::from( [0 => 'C', 1 => 'b'] )->asorted( SORT_STRING|SORT_FLAG_CASE );// [1 => 'b', 0 => 'C'] потому что 'C' -> 'c' и 'c' > 'б'
Возвращает значение в заданной позиции.
публичная функция at(int $pos)
@param int $pos
Позиция значения на карте
@return mix�null Значение в данной позиции или NULL, если значение недоступно
Позиция начинается с нуля, позиция «0» возвращает первый элемент карты, «1» — второй и так далее. Если позиция отрицательна, последовательность начнется с конца карты.
Примеры:
Map::from( [1, 3, 5] )->at( 0 );// 1Map::from( [1, 3, 5] )->at( 1 );// 3Map::from( [ 1, 3, 5] )->at( -1 );// 5Map::from( [1, 3, 5] )->at( 3 );// NULL
Возвращает среднее значение всех целых чисел и значений с плавающей запятой на карте.
общедоступная функция avg($col = null): float
@param Closure|string|null $col
Замыкание, ключ или путь к значениям во вложенном массиве или объекте для вычисления среднего значения.
@return float Среднее значение всех элементов или 0, если на карте нет элементов
Значения NULL обрабатываются как 0, нечисловые значения приведут к ошибке.
Это также работает для многомерных массивов путем передачи ключей массивов, разделенных разделителем («/» по умолчанию), например «key1/key2/key3», чтобы получить «val» из ['key1' => ['key2' => ['key3' => 'val']]]
. То же самое относится к общедоступным свойствам объектов или объектам, реализующим методы __isset()
и __get()
.
Примеры:
Map::from( [1, 3, 5] )->avg(); // 3Map::from( [1, null, 5] )->avg(); // 3Map::from( [1, 'sum', 5] )->avg();// 2Map::from( [['p' => 30], ['p' => 50], ['p' => 10]] )->avg( 'p' );// 30Map::from( [['i' => ['p' => 30]], ['<sp