Manejo fácil y elegante de matrices PHP mediante el uso de un objeto de colección similar a una matriz como lo ofrecen jQuery y Laravel Collections.
compositor req aimeos/mapa
Versiones PHP soportadas:
PHP 7.1+
PHP 8+
Tabla de contenido
¿Por qué PHP Map?
Lista de métodos
Crear
Acceso
Agregar
Agregar
Depurar
Orden
Acortar
Prueba
Mudar
Varios
Documentación
Métodos personalizados
Actuación
Guía de actualización
En lugar de:
$lista = [['id' => 'uno', 'valor' => 'valor1'], ['id' => 'dos', 'valor' => 'valor2'], nulo];$lista[ ] = ['id' => 'tres', 'valor' => 'valor3']; // agregar elementounset( $lista[0] ); // eliminar elemento$lista = array_filter( $lista); // eliminar valores vacíos ordenar( $lista ); // ordenar elementos$pares = array_column( $lista, 'valor', 'id' ); // crear ['tres' => 'valor3']$valor = restablecer( $pares )?: nulo; // devuelve el primer valor
Utilice únicamente:
$lista = [['id' => 'uno', 'valor' => 'valor1'], ['id' => 'dos', 'valor' => 'valor2'], nulo];$valor = map( $lista ) // crear mapa->push( ['id' => 'tres', 'valor' => 'valor3'] ) // agregar elemento->eliminar( 0 ) // eliminar elemento->filtro () // eliminar valores vacíos->sort() // ordenar elementos->col( 'valor', 'id' ) // crear ['tres' => 'valor3']->primero(); // devuelve el primer valor
Todavía puedes usar:
$mapa[] = ['id' => 'tres', 'valor' => 'valor3'];$valor = $mapa[0];cuenta( $mapa );foreach( $mapa como $clave => valor );
Utilice devoluciones de llamada:
Además, el objeto map le permite pasar funciones anónimas a muchos métodos, por ejemplo:
$mapa->cada uno( function( $val, $key ) { echo $key . ': ' . $val; } );
Estilo jQuery:
Si los elementos de su mapa son objetos, puede llamar a sus métodos para cada objeto y obtener el resultado como un nuevo mapa como en jQuery:
// MyClass implementa setStatus() (devolviendo $this) y getCode() (inicializado por el constructor)$map = Map::from( ['a' => new MyClass( 'x' ), 'b' => new MyClass ( 'y' )] );$map->setStatus( 1 )->getCode()->toArray();
Esto llamará setStatus( 1 )
en ambos objetos. Si la implementación setStatus()
devuelve $this
, el nuevo mapa también contendrá:
['a' => MiClase(), 'b' => MiClase()]
En esos nuevos elementos del mapa, se llamará getCode()
, que devuelve x
para el primer objeto e y
para el segundo. El mapa creado a partir de los resultados de getCode()
devolverá:
['a' => 'x', 'b' => 'y']
función mapa función is_map __llamar __callStatic __construir después de todo ordenar ordenado ordenar ordenado en promedio antes de bool llamada emitir fragmento borrar clonar col colapsar combinar comparar concat contiene copiar recuento recuentoPor dd delimitador diff diffAssoc diffKeys volcar duplicados cada vacío es igual a todos excepto explotar filtro encontrar primero firstKey flip plano float from fromJson get getIterator grep groupBy tiene if ifAny ifEmpty implementa en incluye índice insertarDespués de insertarEn insertarAntes de inString int intersect intersectAssoc intersectKeys es estáVacío esNumérico esObjeto esEscalar esUnión de cadena jsonSerializar claves krsort krsorted ksort última última clave ltrim mapa máximo método de fusión min ninguno enésimo offsetExists offsetGet offsetSet offsetUnset solo orden pad partición porcentaje tubería pluck pop pos prefijo anteponer pull push poner aleatorio reducir rechazar volver a escribir eliminar reemplazar revertir rsort invertido rsorted rtrim buscar sep set shift shuffle shuffle skip slice algún tipo ordenado empalme dividir strDespués de strContiene strContainsAll strEnds strEndsAll cadena strInferior strReemplazar strStarts strStartsAll strSufijo superior suma tomar tiempos de tap toArray toJson toReversed toSorted toUrl transformar transponer atravesar árbol recortar uasort uasorted uksort uksorted unión única unshift usort valores usorted caminan donde con zip
función map(): crea un nuevo mapa a partir de elementos pasados
__construct() : Crea un nuevo mapa
clone() : Clona el mapa y todos los objetos dentro
copiar(): Crea una nueva copia
explotar(): divide una cadena en un mapa de elementos
from(): Crea un nuevo mapa a partir de elementos pasados.
fromJson(): Crea un nuevo mapa a partir de una cadena JSON
times(): crea un nuevo mapa invocando el cierre varias veces
tree() : Crea una estructura de árbol a partir de los elementos de la lista.
__call(): llama a un método personalizado
__callStatic(): llama estáticamente a un método personalizado
all() : Devuelve la matriz simple
at() : Devuelve el valor en la posición dada
bool(): Devuelve un elemento por clave y lo convierte en booleano
call(): llama al método dado en todos los elementos
find() : Devuelve el primer/último elemento coincidente
primero(): Devuelve el primer elemento
firstKey(): Devuelve la primera clave
get(): Devuelve un elemento por clave
index() : Devuelve el índice numérico de la clave dada
int(): Devuelve un elemento por clave y lo convierte en un número entero
float(): Devuelve un elemento por clave y lo convierte en flotante
claves(): Devuelve todas las claves
last() : Devuelve el último elemento
lastKey(): Devuelve la última clave
pop(): Devuelve y elimina el último elemento
pos() : Devuelve el índice numérico del valor
pull(): Devuelve y elimina un elemento por clave
random() : Devuelve elementos aleatorios conservando claves
search(): Encuentra la clave de un elemento.
shift(): Devuelve y elimina el primer elemento
string(): Devuelve un elemento por clave y lo convierte en una cadena
toArray(): Devuelve la matriz simple
Unique(): Devuelve todos los elementos únicos que conservan las claves.
valores(): Devuelve todos los elementos con nuevas claves
concat(): Agrega todos los elementos con nuevas claves
insertAfter(): Inserta el valor después del elemento dado.
insertAt(): Inserta el elemento en la posición dada en el mapa.
insertBefore(): Inserta el valor antes del elemento dado.
merge(): combina elementos sobrescribiendo los existentes
pad(): Rellena hasta la longitud especificada con el valor dado
prepend(): Agrega un elemento al principio (alias)
push(): Agrega un elemento al final.
put(): establece la clave y el valor dados en el mapa (alias)
set(): sobrescribe o agrega un elemento
union(): Agrega los elementos sin sobrescribir los existentes.
unshift(): Agrega un elemento al principio
with() : Devuelve una copia y establece un elemento
avg(): Devuelve el promedio de todos los valores
count() : Devuelve el número total de elementos
countBy(): cuenta la frecuencia con la que aparecen los mismos valores en el mapa.
max(): Devuelve el valor máximo de todos los elementos.
min(): Devuelve el valor mínimo de todos los elementos.
porcentaje(): Devuelve el porcentaje de todos los elementos que pasan la prueba.
sum() : Devuelve la suma de todos los valores en el mapa
dd(): imprime el contenido del mapa y finaliza el script.
dump(): Imprime el contenido del mapa.
tap(): pasa un clon del mapa a la devolución de llamada dada
arsort(): elementos de ordenación inversa que conservan las claves
arsorted(): elementos de ordenación inversa que conservan las claves en una copia del mapa
asort() : Ordena elementos conservando claves
asorted(): Ordena elementos conservando claves en una copia del mapa
krsort(): ordenación inversa de elementos por claves
krsorted(): ordenación inversa de elementos por claves en una copia del mapa
ksort(): Ordena elementos por claves
order() : Ordena elementos según las claves pasadas
inversa(): Invierte el orden de la matriz conservando las claves.
invertido(): Invierte el orden de los elementos en una copia del mapa.
toReversed(): Invierte el orden de los elementos en una copia del mapa (alias)
rsort(): ordenación inversa de elementos usando nuevas claves
rsorted(): ordenación inversa de elementos usando nuevas claves en una copia del mapa
shuffle(): aleatoriza el orden de los elementos
shuffled(): aleatoriza el orden de los elementos en una copia del mapa
sort() : Ordena los elementos in situ asignando nuevas claves
sorted(): Ordena los elementos en una copia del mapa usando nuevas claves
toSorted(): Ordena los elementos en una copia del mapa usando nuevas claves (alias)
uasort(): ordena elementos conservando claves mediante devolución de llamada
uasorted(): ordena elementos conservando claves mediante devolución de llamada en una copia del mapa
uksort(): ordena elementos por claves mediante devolución de llamada
uksorted(): ordena elementos por claves usando devolución de llamada en una copia del mapa
usort(): Ordena elementos mediante devolución de llamada asignando nuevas claves
usorted(): Ordena elementos mediante devolución de llamada asignando nuevas claves en una copia del mapa
after() : Devuelve los elementos posteriores al dado
before() : Devuelve los elementos anteriores al dado
clear(): elimina todos los elementos
diff(): Devuelve los elementos que faltan en la lista dada
diffAssoc(): Devuelve los elementos que faltan en la lista dada y verifica las claves
diffKeys(): Devuelve los elementos que faltan en la lista dada por claves
except(): Devuelve un nuevo mapa sin las claves de elemento pasadas
filter(): Aplica un filtro a todos los elementos.
grep(): aplica una expresión regular a todos los elementos
intersect() : Devuelve los elementos compartidos
intersectAssoc(): Devuelve los elementos compartidos y verifica las claves.
intersectKeys(): Devuelve los elementos compartidos por claves
nth() : Devuelve cada enésimo elemento del mapa
only() : Devuelve sólo aquellos elementos especificados por las claves
pop(): Devuelve y elimina el último elemento
pull(): Devuelve y elimina un elemento por clave
rechazar(): elimina todos los elementos coincidentes
remove(): Elimina un elemento por clave
shift(): Devuelve y elimina el primer elemento
skip(): omite el número indicado de elementos y devuelve el resto.
rebanada(): Devuelve una porción del mapa
take(): Devuelve un nuevo mapa con el número de elementos indicado
donde(): Filtra la lista de elementos según una condición dada
función is_map(): prueba si la variable es un objeto de mapa
compare(): compara el valor con todos los elementos del mapa.
contiene(): prueba si un elemento existe en el mapa
each() : aplica una devolución de llamada a cada elemento
vacío(): prueba si el mapa está vacío
equals(): prueba si el contenido del mapa es igual
each(): verifica que todos los elementos pasen la prueba de la devolución de llamada dada
has(): prueba si existe una clave
if(): Ejecuta devoluciones de llamada dependiendo de la condición.
ifAny(): ejecuta devoluciones de llamada si el mapa contiene elementos
ifEmpty(): ejecuta devoluciones de llamada si el mapa está vacío
in(): prueba si el elemento está incluido
incluye(): prueba si el elemento está incluido
inString(): prueba si el elemento es parte de las cadenas en el mapa
is(): prueba si el mapa consta de las mismas claves y valores.
isEmpty(): prueba si el mapa está vacío
isNumeric(): prueba si todas las entradas son valores numéricos
isObject(): prueba si todas las entradas son objetos
isScalar(): prueba si todas las entradas son valores escalares.
isString(): prueba si todas las entradas son valores de cadena.
implements(): prueba si todas las entradas son objetos que implementan la interfaz
none(): prueba si ninguno de los elementos es parte del mapa.
some(): prueba si se incluye al menos un elemento
strContains(): prueba si al menos una de las cadenas pasadas es parte de al menos una entrada
strContainsAll(): prueba si todas las entradas contienen una de las cadenas pasadas.
strEnds(): prueba si al menos una de las entradas termina con una de las cadenas pasadas
strEndsAll(): prueba si todas las entradas terminan con al menos una de las cadenas pasadas.
strStarts(): prueba si al menos una de las entradas comienza con al menos una de las cadenas pasadas.
strStartsAll(): prueba si todas las entradas comienzan con una de las cadenas pasadas
cast(): convierte todas las entradas al tipo pasado
trozo(): divide el mapa en trozos
col(): crea una asignación clave/valor
colapso(): colapsa elementos multidimensionales sobrescribiendo elementos
combine(): combina los elementos del mapa como claves con los valores dados
flat() : Aplana elementos multidimensionales sin sobrescribir elementos
flip(): intercambia claves con sus valores.
groupBy() : Agrupa elementos u objetos de matriz asociativos
join(): Devuelve elementos concatenados como una cadena con separador
ltrim(): Elimina los caracteres pasados de la izquierda de todas las cadenas.
map(): Aplica una devolución de llamada a cada elemento y devuelve los resultados.
partición(): divide la lista en el número dado de grupos
pipe(): Aplica una devolución de llamada a todo el mapa.
pluck(): Crea una asignación clave/valor (alias)
prefix(): agrega un prefijo a cada entrada del mapa
reduce(): Calcula un valor único a partir del contenido del mapa.
rekey(): cambia las claves según la función pasada
reemplazar(): reemplaza elementos de forma recursiva
rtrim(): Elimina los caracteres pasados desde la derecha de todas las cadenas.
splice(): Reemplaza un corte por nuevos elementos
strAfter(): Devuelve las cadenas después del valor pasado
strLower(): convierte todos los caracteres alfabéticos a minúsculas
strReplace(): reemplaza todas las apariciones de la cadena de búsqueda con la cadena de reemplazo
strUpper(): convierte todos los caracteres alfabéticos a mayúsculas
suffix(): agrega un sufijo a cada entrada del mapa
toJson() : Devuelve los elementos en formato JSON
toUrl(): crea una cadena de consulta HTTP
transfrom(): aplica una devolución de llamada a cada elemento que crea nuevos pares clave/valor
transpose(): intercambia filas y columnas por un mapa bidimensional
traverse(): atraviesa árboles de elementos anidados pasando cada elemento a la devolución de llamada
trim(): Elimina los caracteres pasados de la izquierda/derecha de todas las cadenas.
walk(): aplica la devolución de llamada dada a todos los elementos
zip(): fusiona los valores de todas las matrices en el índice correspondiente
delimitador(): establece o devuelve el separador de rutas a matrices multidimensionales
getIterator(): Devuelve un iterador para los elementos.
jsonSerialize(): especifica los datos que deben serializarse en JSON
método(): registra un método personalizado
offsetExists(): comprueba si la clave existe
offsetGet(): Devuelve un elemento por clave
offsetSet(): sobrescribe un elemento
offsetUnset(): elimina un elemento por clave
sep(): establece el separador de rutas a matrices multidimensionales en el mapa actual
Prueba si la variable es un objeto de mapa.
función is_map ($var): bool
@param variable $var
mixta para probar
Ejemplos:
is_map( nuevo mapa() );// trueis_map( [] );// falso
Devuelve un nuevo mapa para los elementos pasados.
mapa de funciones( $elementos = [] ): AimeosMap
@param mixto $elements
Lista de elementos o valor único
@return AimeosMap Instancia de mapa
Ejemplos:
// arraymap( [] );// nullmap( null );// escalarmap( 'a' );// objectmap( new stdClass() );// mapear objectmap( new Map() );// objectmap iterable( new ArrayObject() );// cierre evaluado lazilymap( function() {return []; } );
Ver también:
rekey() - Cambia las claves según la función pasada
transform(): crea nuevos pares clave/valor utilizando la función pasada y devuelve un nuevo mapa para el resultado.
Crea un nuevo objeto de mapa.
función pública __construct( $elementos = [] )
@param $elements
mixtos Elemento único, lista de elementos, objeto Mapa, objetos iterables o iteradores, todo lo demás
Ejemplos:
// arraynew Map( [] );// nullnew Map( null );// escalarnew Map( 'a' );// objectnew Map( new stdClass() );// map objectnew Map( new Map() ); // objeto iterablenew Map( new ArrayObject() );// cierre evaluado perezosamentenew Map( function() {return []; } );
Maneja llamadas dinámicas a métodos personalizados para la clase.
función pública __call(cadena $nombre,matriz $params )
@param cadena $name
Nombre del método
@param array<mixed> $params
Lista de parámetros
@return Resultado mixto de la función llamada o nuevo mapa con resultados de los métodos del elemento
Llama a un método personalizado agregado por Map::method(). El método llamado tiene acceso a la matriz interna mediante $this->items
.
Ejemplos:
Mapa::método( 'caso', función( $caso = CASE_LOWER ) {return new self( array_change_key_case( $this->items, $caso ) ); } ); Mapa::from( ['a' => 'bar'] )->case( CASE_UPPER );// ['A' => 'bar']
Esto también permite llamar a métodos de objetos si los elementos son objetos:
$elemento = nueva MiClase(); // con el método setStatus() (devolviendo $this) y getCode() implementadoMap::from( [$item, $item] )->setStatus( 1 )->getCode()->toArray();
Esto llamará al método setStatus()
de cada elemento en el mapa y usará sus valores de retorno para crear un nuevo mapa. En el nuevo mapa, se llama al método getCode()
para cada elemento y sus valores de retorno también se almacenan en un nuevo mapa. Luego se devuelve este último mapa y las claves del mapa original se conservan en el mapa devuelto.
Si los elementos no son objetos, se omiten y si esto se aplica a todos los elementos, se devuelve un mapa vacío. En caso de que el mapa contenga objetos de tipos mixtos y uno de ellos no implemente el método llamado, se generará un error.
Maneja llamadas estáticas a métodos personalizados para la clase.
función estática pública __callStatic (cadena $ nombre, matriz $ parámetros)
@param cadena $name
Nombre del método
@param array<mixed> $params
Lista de parámetros
@return Resultado mixto de la función llamada o nuevo mapa con resultados de los métodos del elemento
@throws BadMethodCallException Si no se ha registrado ningún método para ese nombre
Llama a un método personalizado agregado por Map::method() estáticamente. El método llamado no tiene acceso a la matriz interna porque no hay ningún objeto disponible.
Ejemplos:
Mapa::método( 'foo', función( $arg1, $arg2 ) {} ); Mapa::foo( $arg1, $arg2 );
Devuelve los elementos posteriores al dado.
función pública después ($ valor): self
@param Cierre|int|string $value
Valor o función con parámetros (elemento, clave)
@return self<int|string,mixed> Nuevo mapa con los elementos posteriores al dado
Las claves se conservan mediante este método.
Ejemplos:
Mapa::desde( [0 => 'b', 1 => 'a'] )->después( 'b' );// [1 => 'a']Mapa::desde( ['a' = > 1, 'b' => 0] )->después( 1 );// ['b' => 0]Mapa::desde( [0 => 'b', 1 => 'a'] )- >después( 'c' );// []Map::from( ['a', 'c', 'b'] )->after( function( $item, $key ) {return $item >= 'c'; } );// [2 => 'b']
Devuelve los elementos como una matriz simple.
función pública todos(): matriz
@return matriz Matriz simple
Ejemplos:
Mapa::desde( ['a'] )->todos();// ['a']
Ordena todos los elementos en orden inverso y mantiene la asociación clave.
función pública ordenar (int $ opciones = SORT_REGULAR): self
@param int $options
Opciones de clasificación para arsort()
@return self<int|string,mixed> Mapa actualizado para interfaz fluida
Las claves se conservan mediante este método y no se crea ningún mapa nuevo.
El parámetro $options
modifica cómo se comparan los valores. Los posibles valores de los parámetros son:
SORT_REGULAR: compara elementos normalmente (no cambia los tipos)
SORT_NUMERIC: compara elementos numéricamente
SORT_STRING: compara elementos como cadenas
SORT_LOCALE_STRING: compara elementos como cadenas, según la configuración regional actual o modificada por setlocale()
SORT_NATURAL: compara elementos como cadenas usando "ordenamiento natural" como natsort()
SORT_FLAG_CASE: use SORT_STRING|SORT_FLAG_CASE y SORT_NATURAL|SORT_FLAG_CASE para ordenar cadenas sin distinguir entre mayúsculas y minúsculas
Ejemplos:
Mapa::desde( ['b' => 0, 'a' => 1] )->arsort();// ['a' => 1, 'b' => 0]Mapa::desde( [ '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'] porque 'C' -> 'c' y 'c' > 'b'
Ordena una copia de todos los elementos en orden inverso y mantiene la asociación de claves.
función pública ordenada (int $ opciones = SORT_REGULAR): self
@param int $options
Opciones de clasificación para arsort()
@return self<int|string,mixed> Mapa actualizado para interfaz fluida
Las claves se conservan mediante este método y se crea un nuevo mapa.
El parámetro $options
modifica cómo se comparan los valores. Los posibles valores de los parámetros son:
SORT_REGULAR: compara elementos normalmente (no cambia los tipos)
SORT_NUMERIC: compara elementos numéricamente
SORT_STRING: compara elementos como cadenas
SORT_LOCALE_STRING: compara elementos como cadenas, según la configuración regional actual o modificada por setlocale()
SORT_NATURAL: compara elementos como cadenas usando "ordenamiento natural" como natsort()
SORT_FLAG_CASE: use SORT_STRING|SORT_FLAG_CASE y SORT_NATURAL|SORT_FLAG_CASE para ordenar cadenas sin distinguir entre mayúsculas y minúsculas
Ejemplos:
Mapa::desde( ['b' => 0, 'a' => 1] )->arsorted();// ['a' => 1, 'b' => 0]Mapa::desde( [ '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' y 'c' > 'b'
Ordena todos los elementos y mantiene la asociación clave.
función pública sort( int $options = SORT_REGULAR ): self
@param int $options
Opciones de ordenación para asort()
@return self<int|string,mixed> Mapa actualizado para interfaz fluida
Las claves se conservan mediante este método y no se crea ningún mapa nuevo.
El parámetro modifica cómo se comparan los valores. Los posibles valores de los parámetros son:
SORT_REGULAR: compara elementos normalmente (no cambia los tipos)
SORT_NUMERIC: compara elementos numéricamente
SORT_STRING: compara elementos como cadenas
SORT_LOCALE_STRING: compara elementos como cadenas, según la configuración regional actual o modificada por setlocale()
SORT_NATURAL: compara elementos como cadenas usando "ordenamiento natural" como natsort()
SORT_FLAG_CASE: use SORT_STRING|SORT_FLAG_CASE y SORT_NATURAL|SORT_FLAG_CASE para ordenar cadenas sin distinguir entre mayúsculas y minúsculas
Ejemplos:
Mapa::desde( ['a' => 1, 'b' => 0] )->asort();// ['b' => 0, 'a' => 1]Mapa::desde( [ 0 => 'b', 1 => 'a'] )->asort();// [1 => 'a', 0 => 'b']Map::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' y 'c' > 'b'
Ordena una copia de todos los elementos y mantiene la asociación de claves.
función pública variada (int $ opciones = SORT_REGULAR): self
@param int $options
Opciones de ordenación para asort()
@return self<int|string,mixed> Mapa actualizado para interfaz fluida
Las claves se conservan mediante este método y se crea un nuevo mapa.
El parámetro modifica cómo se comparan los valores. Los posibles valores de los parámetros son:
SORT_REGULAR: compara elementos normalmente (no cambia los tipos)
SORT_NUMERIC: compara elementos numéricamente
SORT_STRING: compara elementos como cadenas
SORT_LOCALE_STRING: compara elementos como cadenas, según la configuración regional actual o modificada por setlocale()
SORT_NATURAL: compara elementos como cadenas usando "ordenamiento natural" como natsort()
SORT_FLAG_CASE: use SORT_STRING|SORT_FLAG_CASE y SORT_NATURAL|SORT_FLAG_CASE para ordenar cadenas sin distinguir entre mayúsculas y minúsculas
Ejemplos:
Mapa::desde( ['a' => 1, 'b' => 0] )->asorted();// ['b' => 0, 'a' => 1]Mapa::desde( [ 0 => 'b', 1 => 'a'] )->asorted();// [1 => 'a', 0 => 'b']Map::from( [0 => 'C' , 1 => 'b'] )->asorted();// [0 => 'C', 1 => 'b'] porque 'C' < 'b'Map::from( [0 => 'C', 1 => 'b'] )->asorted( SORT_STRING|SORT_FLAG_CASE );// [1 => 'b', 0 => 'C'] porque 'C' -> 'c' y 'c' > 'b'
Devuelve el valor en la posición dada.
función pública en (int $pos)
@param int $pos
Posición del valor en el mapa
@return Mixed�null Valor en la posición dada o NULL si no hay ningún valor disponible
La posición comienza desde cero y una posición de "0" devuelve el primer elemento del mapa, "1" el segundo y así sucesivamente. Si la posición es negativa, la secuencia comenzará desde el final del mapa.
Ejemplos:
Mapa::desde( [1, 3, 5] )->en( 0 );// 1Mapa::desde( [1, 3, 5] )->en( 1 );// 3Mapa::desde( [ 1, 3, 5] )->en( -1 );// 5Map::from( [1, 3, 5] )->en( 3 );// NULL
Devuelve el promedio de todos los valores enteros y flotantes del mapa.
función pública promedio ($ col = nulo): flotante
@param Cierre|string|null $col
Cierre, clave o ruta a los valores en la matriz u objeto anidado para calcular el promedio
@return float Promedio de todos los elementos o 0 si no hay elementos en el mapa
Los valores NULL se tratan como 0; los valores no numéricos generarán un error.
Esto también funciona para matrices multidimensionales al pasar las claves de las matrices separadas por el delimitador ("/" de forma predeterminada), por ejemplo, "key1/key2/key3" para obtener "val" de ['key1' => ['key2' => ['key3' => 'val']]]
. Lo mismo se aplica a las propiedades públicas de objetos u objetos que implementan los métodos __isset()
y __get()
.
Ejemplos:
Mapa::desde( [1, 3, 5] )->avg();// 3Map::desde( [1, nulo, 5] )->avg();// 3Map::desde( [1, 'suma', 5] )->avg();// 2Map::from( [['p' => 30], ['p' => 50], ['p' => 10]] )->avg( 'p' );// 30Map::from( [['i' => ['p' => 30]], ['<sp