Manipulação fácil e elegante de arrays PHP usando um objeto de coleção semelhante a um array, conforme oferecido por jQuery e Laravel Collections.
compositor req aimeos/mapa
Versões PHP suportadas:
PHP 7.1+
PHP 8+
Índice
Por que mapa PHP
Lista de métodos
Criar
Acesso
Adicionar
Agregar
Depurar
Ordem
Encurtar
Teste
Mutar
Diversos
Documentação
Métodos personalizados
Desempenho
Guia de atualização
Em vez de:
$lista = [['id' => 'um', 'valor' => 'valor1'], ['id' => 'dois', 'valor' => 'valor2'], nulo];$lista[ ] = ['id' => 'três', 'valor' => 'valor3']; // adiciona elementunset( $list[0] ); // remove elemento$lista = array_filter( $lista ); // remove valores vaziossort( $list ); // ordena os elementos$pares = array_column( $lista, 'valor', 'id' ); //cria ['três' => 'valor3']$valor = reset( $pares ) ?: null; //retorna o primeiro valor
Use apenas:
$lista = [['id' => 'um', 'valor' => 'valor1'], ['id' => 'dois', 'valor' => 'valor2'], nulo];$valor = map( $list ) // cria Map->push( ['id' => 'três', 'value' => 'value3'] ) // adiciona elemento->remove( 0 ) // remove elemento->filtro () //remove valores vazios->sort() //classifica elementos->col( 'valor', 'id' ) // cria ['três' => 'valor3']->primeiro(); //retorna o primeiro valor
Você ainda pode usar:
$map[] = ['id' => 'três', 'value' => 'value3'];$value = $map[0];count( $map );foreach( $map as $key => value );
Use retornos de chamada:
Além disso, o objeto map permite passar funções anônimas para vários métodos, por exemplo:
$map->each( function( $val, $key ) { echo $key . ': ' . $val; } );
Estilo jQuery:
Se os elementos do seu mapa forem objetos, você pode chamar seus métodos para cada objeto e obter o resultado como um novo mapa, assim como no jQuery:
// MyClass implementa setStatus() (retornando $this) e getCode() (inicializado pelo construtor)$map = Map::from( ['a' => new MyClass( 'x' ), 'b' => new MyClass ( 'y' )] );$map->setStatus( 1 )->getCode()->toArray();
Isso chamará setStatus( 1 )
em ambos os objetos. Se a implementação setStatus()
retornar $this
, o novo mapa também conterá:
['a' => MinhaClasse(), 'b' => MinhaClasse()]
Nesses novos elementos do mapa, getCode()
será chamado, retornando x
para o primeiro objeto e y
para o segundo. O mapa criado a partir dos resultados de getCode()
retornará:
['a' => 'x', 'b' => 'y']
função mapa função is_map __call __callStatic __construct depois de todos arsort arsorted asort asorted em avg antes de bool call cast chunk limpar clone col colapso combinar comparar concat contém contagem de cópias countBy dd delimitador diff diffAssoc diffKeys dump duplica cada vazio é igual a cada exceto explodir filtro encontrar primeiro firstKey flat flip float from fromJson get getIterator grep groupBy tem if ifAny ifEmpty implementa no índice inclui insertAfter insertAt insertBefore inString int intersect intersectAssoc intersectKeys is isEmpty isNumeric isObject isScalar isString join jsonSerialize keys krsort krsorted ksort last lastKey ltrim map max merge método min nenhum n-ésimo offsetExists offsetGet offsetSet offsetUnset apenas order pad partição porcentagem pipe arrancar pop pos prefixo prepend pull push put random reduzir rejeitar rechave remover substituir reverso invertido rsort rsorted rtrim pesquisa sep set shift shuffle embaralhado pular fatia alguma classificação ordenada splice split strAfter strContains strContainsAll strEnds strEndsAll string strLower strReplace strStarts strStartsAll strUpper suffix sum leva tempos de toque paraArray toJson toReversed toSorted toUrl transformar transpor atravessar árvore aparar uasort uasorted uksort uksorted union unique unshift usort valores usadosortados andam onde com zip
function map(): Cria um novo mapa a partir de elementos passados
__construct(): Cria um novo mapa
clone(): Clona o mapa e todos os objetos dentro dele
copy(): Cria uma nova cópia
explode(): Divide uma string em um mapa de elementos
from(): Cria um novo mapa a partir de elementos passados
fromJson() : Cria um novo mapa a partir de uma string JSON
times() : Cria um novo mapa invocando o fechamento várias vezes
tree(): Cria uma estrutura em árvore a partir dos itens da lista
__call(): chama um método personalizado
__callStatic(): chama um método personalizado estaticamente
all(): Retorna o array simples
at(): Retorna o valor na posição fornecida
bool(): Retorna um elemento por chave e o converte em booleano
call(): chama o método fornecido em todos os itens
find(): Retorna o primeiro/último elemento correspondente
first(): Retorna o primeiro elemento
firstKey(): Retorna a primeira chave
get(): Retorna um elemento por chave
index(): Retorna o índice numérico da chave fornecida
int(): Retorna um elemento por chave e o converte em inteiro
float(): Retorna um elemento por chave e o converte em float
keys(): Retorna todas as chaves
last(): Retorna o último elemento
lastKey(): Retorna a última chave
pop(): Retorna e remove o último elemento
pos(): Retorna o índice numérico do valor
pull(): Retorna e remove um elemento por chave
random(): Retorna elementos aleatórios preservando chaves
search(): Encontre a chave de um elemento
shift(): Retorna e remove o primeiro elemento
string(): Retorna um elemento por chave e o converte em string
toArray(): Retorna o array simples
unique(): Retorna todos os elementos únicos preservando as chaves
valores(): Retorna todos os elementos com novas chaves
concat(): Adiciona todos os elementos com novas chaves
insertAfter(): Insere o valor após o elemento fornecido
insertAt(): Insere o elemento na posição especificada no mapa
insertBefore(): Insere o valor antes do elemento fornecido
merge(): Combina elementos substituindo os existentes
pad(): Preencha até o comprimento especificado com o valor fornecido
prepend(): Adiciona um elemento no início (alias)
push(): Adiciona um elemento ao final
put(): Define a chave e o valor fornecidos no mapa (alias)
set(): substitui ou adiciona um elemento
union(): Adiciona os elementos sem substituir os existentes
unshift(): Adiciona um elemento no início
with(): Retorna uma cópia e define um elemento
avg(): Retorna a média de todos os valores
count(): Retorna o número total de elementos
countBy(): conta quantas vezes os mesmos valores estão no mapa
max(): Retorna o valor máximo de todos os elementos
min(): Retorna o valor mínimo de todos os elementos
percentage(): Retorna a porcentagem de todos os elementos que passaram no teste
sum(): Retorna a soma de todos os valores no mapa
dd(): Imprime o conteúdo do mapa e finaliza o script
dump(): Imprime o conteúdo do mapa
tap(): passa um clone do mapa para o retorno de chamada fornecido
arsort(): elementos de classificação reversa preservando chaves
arsorted(): elementos de classificação reversa preservando chaves em uma cópia do mapa
asort(): Classifica os elementos preservando as chaves
asorted(): classifica os elementos preservando as chaves em uma cópia do mapa
krsort(): classificação reversa de elementos por chaves
krsorted() : Classificação reversa de elementos por chaves em uma cópia do mapa
ksort(): Classifica os elementos por chaves
order(): ordena os elementos pelas chaves passadas
reverse(): Inverte a ordem do array preservando as chaves
reversed() : Inverte a ordem dos elementos em uma cópia do mapa
toReversed(): Inverte a ordem dos elementos em uma cópia do mapa (alias)
rsort(): elementos de classificação reversa usando novas chaves
rsorted() : Classificação reversa de elementos usando novas chaves em uma cópia do mapa
shuffle(): Aleatoriza a ordem dos elementos
shuffled() : Aleatoriza a ordem dos elementos em uma cópia do mapa
sort(): classifica os elementos no local atribuindo novas chaves
sorted(): classifica os elementos em uma cópia do mapa usando novas chaves
toSorted() : Classifica os elementos em uma cópia do mapa usando novas chaves (alias)
uasort(): classifica os elementos preservando as chaves usando callback
uasorted(): classifica os elementos preservando as chaves usando callback em uma cópia do mapa
uksort(): Classifica elementos por chaves usando retorno de chamada
uksorted(): classifica os elementos por chaves usando retorno de chamada em uma cópia do mapa
usort(): Classifica elementos usando retorno de chamada atribuindo novas chaves
usorted(): Classifica os elementos usando callback atribuindo novas chaves em uma cópia do mapa
after(): Retorna os elementos após aquele fornecido
before(): Retorna os elementos anteriores ao fornecido
clear(): Remove todos os elementos
diff(): Retorna os elementos que faltam na lista fornecida
diffAssoc(): Retorna os elementos que faltam na lista fornecida e verifica as chaves
diffKeys(): Retorna os elementos que faltam na lista fornecida por chaves
except(): Retorna um novo mapa sem as chaves dos elementos passadas
filter(): Aplica um filtro a todos os elementos
grep(): Aplica uma expressão regular a todos os elementos
intersect(): Retorna os elementos compartilhados
intersectAssoc() : Retorna os elementos compartilhados e verifica as chaves
intersectKeys() : Retorna os elementos compartilhados pelas chaves
nth(): Retorna cada enésimo elemento do mapa
only(): Retorna apenas os elementos especificados pelas chaves
pop(): Retorna e remove o último elemento
pull(): Retorna e remove um elemento por chave
rejeitar(): Remove todos os elementos correspondentes
remove(): Remove um elemento por chave
shift(): Retorna e remove o primeiro elemento
skip(): pula um determinado número de itens e retorna o restante
slice(): Retorna uma fatia do mapa
take(): Retorna um novo mapa com o número determinado de itens
where(): Filtra a lista de elementos por uma determinada condição
função is_map(): testa se a variável é um objeto de mapa
compare(): compara o valor com todos os elementos do mapa
contains(): testa se existe um item no mapa
each(): Aplica um retorno de chamada a cada elemento
vazio(): testa se o mapa está vazio
equals(): testa se o conteúdo do mapa é igual
cada(): verifica se todos os elementos passam no teste do retorno de chamada fornecido
has(): testa se existe uma chave
if(): Executa retornos de chamada dependendo da condição
ifAny(): Executa retornos de chamada se o mapa contiver elementos
ifEmpty(): Executa callbacks se o mapa estiver vazio
in(): testa se o elemento está incluído
inclui(): testa se o elemento está incluído
inString(): testa se o item faz parte das strings do mapa
is(): testa se o mapa consiste nas mesmas chaves e valores
isEmpty(): testa se o mapa está vazio
isNumeric(): testa se todas as entradas são valores numéricos
isObject(): testa se todas as entradas são objetos
isScalar(): testa se todas as entradas são valores escalares.
isString(): testa se todas as entradas são valores de string.
implements(): testa se todas as entradas são objetos que implementam a interface
none(): testa se nenhum dos elementos faz parte do mapa
some(): testa se pelo menos um elemento está incluído
strContains(): testa se pelo menos uma das strings passadas faz parte de pelo menos uma entrada
strContainsAll(): testa se todas as entradas contêm uma das strings passadas
strEnds(): testa se pelo menos uma das entradas termina com uma das strings passadas
strEndsAll(): testa se todas as entradas terminam com pelo menos uma das strings passadas
strStarts(): testa se pelo menos uma das entradas começa com pelo menos uma das strings passadas
strStartsAll(): testa se todas as entradas começam com uma das strings passadas
cast(): converte todas as entradas para o tipo passado
chunk() : Divide o mapa em pedaços
col() : Cria um mapeamento chave/valor
colapso() : Recolhe elementos multidimensionais sobrescrevendo elementos
combine(): Combina os elementos do mapa como chaves com os valores fornecidos
flat(): nivela elementos multidimensionais sem sobrescrever elementos
flip(): Troca chaves com seus valores
groupBy(): agrupa elementos ou objetos de array associativo
join(): Retorna elementos concatenados como string com separador
ltrim(): Remove os caracteres passados à esquerda de todas as strings
map(): Aplica um retorno de chamada a cada elemento e retorna os resultados
partição(): divide a lista em um determinado número de grupos
pipe(): Aplica um retorno de chamada a todo o mapa
pluck() : Cria um mapeamento chave/valor (alias)
prefix(): Adiciona um prefixo a cada entrada do mapa
reduzir(): Calcula um único valor do conteúdo do mapa
rekey(): altera as chaves de acordo com a função passada
replace(): Substitui elementos recursivamente
rtrim(): Remove os caracteres passados à direita de todas as strings
splice(): Substitui uma fatia por novos elementos
strAfter(): Retorna as strings após o valor passado
strLower(): Converte todos os caracteres alfabéticos para minúsculas
strReplace(): Substitui todas as ocorrências da string de pesquisa pela string de substituição
strUpper(): Converte todos os caracteres alfabéticos para maiúsculas
suffix(): Adiciona um sufixo a cada entrada do mapa
toJson() : Retorna os elementos no formato JSON
toUrl(): Cria uma string de consulta HTTP
transfrom(): Aplica um retorno de chamada a cada elemento que cria novos pares chave/valor
transpose() : Troca linhas e colunas por um mapa bidimensional
traverse(): percorre árvores de itens aninhados, passando cada item para o retorno de chamada
trim(): Remove os caracteres passados da esquerda/direita de todas as strings
walk(): Aplica o retorno de chamada fornecido a todos os elementos
zip(): Mescla os valores de todos os arrays no índice correspondente
delimiter(): Define ou retorna o separador de caminhos para arrays multidimensionais
getIterator(): Retorna um iterador para os elementos
jsonSerialize(): especifica os dados que devem ser serializados para JSON
method(): Registra um método personalizado
offsetExists(): Verifica se a chave existe
offsetGet(): Retorna um elemento por chave
offsetSet(): Substitui um elemento
offsetUnset(): Remove um elemento por chave
sep(): Define o separador de caminhos para arrays multidimensionais no mapa atual
Testa se a variável é um objeto de mapa
função is_map($var): bool
@param misto $var
Variável para testar
Exemplos:
is_map( new Map() );// trueis_map( [] );// false
Retorna um novo mapa para os elementos passados.
mapa de funções ($elements = []): AimeosMap
@param mixed $elements
Lista de elementos ou valor único
@return Instância do mapa AimeosMap
Exemplos:
// arraymap( [] );// nullmap( null );// scalarmap( 'a' );// objectmap( new stdClass() );// map objectmap( new Map() );// objectmap iterável( new ArrayObject() );// fechamento avaliado lazilymap( function() {return []; } );
Veja também:
rekey() - Altera as chaves de acordo com a função passada
transform() - Cria novos pares chave/valor usando a função passada e retorna um novo mapa para o resultado
Cria um novo objeto de mapa.
função pública __construct( $elements = [] )
@param mixed $elements
Elemento único, lista de elementos, objeto Map, objetos iteráveis ou iteradores, todo o resto
Exemplos:
// arraynew Map( [] );// nullnew Map( null );// scalarnew Map( 'a' );// objectnew Map( new stdClass() );// map objectnew Map( new Map() ); // objeto iterávelnew Map( new ArrayObject() );// fechamento avaliado preguiçosamentenew Map( function() {return []; } );
Lida com chamadas dinâmicas para métodos personalizados para a classe.
função pública __call(string $nome, array $params)
@param string $name
Nome do método
@param array<misto> $params
Lista de parâmetros
@return misto Resultado da função chamada ou novo mapa com resultados dos métodos do elemento
Chama um método personalizado adicionado por Map::method(). O método chamado tem acesso ao array interno usando $this->items
.
Exemplos:
Map::method( 'case', function( $case = CASE_LOWER ) {return new self( array_change_key_case( $this->items, $case ) ); } ); Mapa::from( ['a' => 'bar'] )->case( CASE_UPPER );// ['A' => 'bar']
Isso também permite chamar métodos de objetos se os itens forem objetos:
$item = new MinhaClasse(); // com o método setStatus() (retornando $this) e getCode() implementadoMap::from( [$item, $item] )->setStatus( 1 )->getCode()->toArray();
Isso chamará o método setStatus()
de cada elemento no mapa e usará seus valores de retorno para criar um novo mapa. No novo mapa, o método getCode()
é chamado para cada elemento e seus valores de retorno também são armazenados em um novo mapa. Este último mapa é então retornado e as chaves do mapa original são preservadas no mapa retornado.
Se os elementos não forem objetos, eles serão ignorados e se isso se aplicar a todos os elementos, um mapa vazio será retornado. Caso o mapa contenha objetos de tipos mistos e um deles não implemente o método chamado, será gerado um erro.
Lida com chamadas estáticas para métodos personalizados da classe.
função estática pública __callStatic(string $nome, array $params)
@param string $name
Nome do método
@param array<misto> $params
Lista de parâmetros
@return misto Resultado da função chamada ou novo mapa com resultados dos métodos do elemento
@throws BadMethodCallException Se nenhum método foi registrado para esse nome
Chama um método personalizado adicionado por Map::method() estaticamente. O método chamado não tem acesso ao array interno porque nenhum objeto está disponível.
Exemplos:
Map::method( 'foo', function( $arg1, $arg2 ) {} ); Mapa::foo( $arg1, $arg2 );
Retorna os elementos após aquele fornecido.
função pública depois ($ valor): self
@param Closure|int|string $value
Valor ou função com parâmetros (item, chave)
@return self<int|string,mixed> Novo mapa com os elementos após aquele fornecido
As chaves são preservadas usando este método.
Exemplos:
Mapa::from( [0 => 'b', 1 => 'a'] )->after( 'b' );// [1 => 'a']Mapa::from( ['a' = > 1, 'b' => 0] )->after( 1 );// ['b' => 0]Map::from( [0 => 'b', 1 => 'a'] )- >depois( 'c' );// []Map::from( ['a', 'c', 'b'] )->after( function( $item, $key ) {return $item >= 'c'; } );// [2 => 'b']
Retorna os elementos como um array simples.
função pública all(): array
@return matriz Matriz simples
Exemplos:
Mapa::from( ['a'] )->all();// ['a']
Classifica todos os elementos na ordem inversa e mantém a associação de chaves.
classificação de função pública (int $ opções = SORT_REGULAR): self
@param int $options
Opções de classificação para arsort()
@return self<int|string,mixed> Mapa atualizado para interface fluida
As chaves são preservadas usando este método e nenhum novo mapa é criado.
O parâmetro $options
modifica a forma como os valores são comparados. Os possíveis valores dos parâmetros são:
SORT_REGULAR: compare os elementos normalmente (não altere os tipos)
SORT_NUMERIC: compara elementos numericamente
SORT_STRING: compara elementos como strings
SORT_LOCALE_STRING: compara elementos como strings, com base na localidade atual ou alterado por setlocale()
SORT_NATURAL: compare elementos como strings usando "ordenação natural" como natsort()
SORT_FLAG_CASE : use SORT_STRING|SORT_FLAG_CASE e SORT_NATURAL|SORT_FLAG_CASE para classificar strings sem distinção entre maiúsculas e minúsculas
Exemplos:
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']Mapa::from( [0 => 'C', 1 => 'b'] )->arsort( SORT_STRING|SORT_FLAG_CASE );// [0 => ' C', 1 => 'b'] porque 'C' -> 'c' e 'c' > 'b'
Classifica uma cópia de todos os elementos na ordem inversa e mantém a associação de chaves.
função pública ordenada (int $options = SORT_REGULAR): self
@param int $options
Opções de classificação para arsort()
@return self<int|string,mixed> Mapa atualizado para interface fluida
As chaves são preservadas usando este método e um novo mapa é criado.
O parâmetro $options
modifica a forma como os valores são comparados. Os possíveis valores dos parâmetros são:
SORT_REGULAR: compare os elementos normalmente (não altere os tipos)
SORT_NUMERIC: compara elementos numericamente
SORT_STRING: compara elementos como strings
SORT_LOCALE_STRING: compara elementos como strings, com base na localidade atual ou alterado por setlocale()
SORT_NATURAL: compare elementos como strings usando "ordenação natural" como natsort()
SORT_FLAG_CASE : use SORT_STRING|SORT_FLAG_CASE e SORT_NATURAL|SORT_FLAG_CASE para classificar strings sem distinção entre maiúsculas e minúsculas
Exemplos:
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'] porque 'C' -> 'c' e 'c' > 'b'
Classifica todos os elementos e mantém a associação chave.
função pública asort(int $options = SORT_REGULAR): self
@param int $options
Opções de classificação para asort()
@return self<int|string,mixed> Mapa atualizado para interface fluida
As chaves são preservadas usando este método e nenhum novo mapa é criado.
O parâmetro modifica como os valores são comparados. Os possíveis valores dos parâmetros são:
SORT_REGULAR: compare os elementos normalmente (não altere os tipos)
SORT_NUMERIC: compara elementos numericamente
SORT_STRING: compara elementos como strings
SORT_LOCALE_STRING: compara elementos como strings, com base na localidade atual ou alterado por setlocale()
SORT_NATURAL: compare elementos como strings usando "ordenação natural" como natsort()
SORT_FLAG_CASE : use SORT_STRING|SORT_FLAG_CASE e SORT_NATURAL|SORT_FLAG_CASE para classificar strings sem distinção entre maiúsculas e minúsculas
Exemplos:
Map::from( ['a' => 1, 'b' => 0] )->asort();// ['b' => 0, 'a' => 1]Map::from( [ 0 => 'b', 1 => 'a'] )->asort();// [1 => 'a', 0 => 'b']Mapa::from( [0 => 'C' , 1 => 'b'] )->asort();// [0 => 'C', 1 => 'b'] porque 'C' < 'b'Map::from( [0 => 'C', 1 => 'b'] )->arsort( SORT_STRING|SORT_FLAG_CASE );// [1 => 'b', 0 => 'C'] porque 'C' -> 'c' e 'c' > 'b'
Classifica uma cópia de todos os elementos e mantém a associação chave.
função pública sortida (int $ opções = SORT_REGULAR): self
@param int $options
Opções de classificação para asort()
@return self<int|string,mixed> Mapa atualizado para interface fluida
As chaves são preservadas usando este método e um novo mapa é criado.
O parâmetro modifica como os valores são comparados. Os possíveis valores dos parâmetros são:
SORT_REGULAR: compare os elementos normalmente (não altere os tipos)
SORT_NUMERIC: compara elementos numericamente
SORT_STRING: compara elementos como strings
SORT_LOCALE_STRING: compara elementos como strings, com base na localidade atual ou alterado por setlocale()
SORT_NATURAL: compare elementos como strings usando "ordenação natural" como natsort()
SORT_FLAG_CASE : use SORT_STRING|SORT_FLAG_CASE e SORT_NATURAL|SORT_FLAG_CASE para classificar strings sem distinção entre maiúsculas e minúsculas
Exemplos:
Mapa::from( ['a' => 1, 'b' => 0] )->asorted();// ['b' => 0, 'a' => 1]Map::from( [ 0 => 'b', 1 => 'a'] )->asorted();// [1 => 'a', 0 => 'b']Mapa::from( [0 => 'C' , 1 => 'b'] )->asorted();// [0 => 'C', 1 => 'b'] porque 'C' < 'b'Map::from( [0 => 'C', 1 => 'b'] )->assorted( SORT_STRING|SORT_FLAG_CASE );// [1 => 'b', 0 => 'C'] porque 'C' -> 'c' e 'c' > 'b'
Retorna o valor na posição fornecida.
função pública em(int $pos)
@param int $pos
Posição do valor no mapa
@return mixed�null Valor na posição especificada ou NULL se nenhum valor estiver disponível
A posição começa em zero e uma posição “0” retorna o primeiro elemento do mapa, “1” o segundo e assim por diante. Se a posição for negativa, a sequência começará no final do mapa.
Exemplos:
Mapa::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
Retorna a média de todos os valores inteiros e flutuantes no mapa.
função pública avg($col = null): float
@param Closure|string|null $col
Fechamento, chave ou caminho para os valores na matriz ou objeto aninhado para calcular a média
@return float Média de todos os elementos ou 0 se não houver elementos no mapa
Valores NULL são tratados como 0, valores não numéricos gerarão um erro.
Isso também funciona para matrizes multidimensionais, passando as chaves das matrizes separadas pelo delimitador ("/" por padrão), por exemplo, "key1/key2/key3" para obter "val" de ['key1' => ['key2' => ['key3' => 'val']]]
. O mesmo se aplica a propriedades públicas de objetos ou objetos que implementam os métodos __isset()
e __get()
.
Exemplos:
Mapa::from( [1, 3, 5] )->avg();// 3Map::from( [1, null, 5] )->avg();// 3Map::from( [1, 'soma', 5] )->avg();// 2Map::from( [['p' => 30], ['p' => 50], ['p' => 10]] )->avg( 'p' );// 30Map::from( [['i' => ['p' => 30]], ['<sp