SkillAgentSearch skills...

Map

PHP arrays and collections made easy

Install / Use

/learn @aimeos/Map
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

<a class="badge" href="https://app.circleci.com/projects/github/aimeos/map"><img src="https://dl.circleci.com/status-badge/img/gh/aimeos/map/tree/4.x.svg?style=shield" alt="Build Status" height="20"></a> <a class="badge" href="https://coveralls.io/github/aimeos/map"><img src="https://coveralls.io/repos/github/aimeos/map/badge.svg" alt="Coverage Status" height="20"></a> <a class="badge" href="https://packagist.org/packages/aimeos/map"><img src="https://poser.pugx.org/aimeos/map/license.svg" alt="License" height="20"></a> <a class="badge" href="https://packagist.org/packages/aimeos/map"><img src="https://poser.pugx.org/aimeos/map/v/stable" alt="Latest Stable Version" height="20"></a> <a class="badge" href="https://packagist.org/packages/aimeos/map"><img src="https://badgen.net/github/stars/aimeos/map" alt="Stars" height="20"></a> <a class="badge" href="https://packagist.org/packages/aimeos/map"><img src="https://poser.pugx.org/aimeos/map/downloads" alt="Downloads" height="20"></a>

PHP arrays and collections made easy

Easy and elegant handling of PHP arrays by using an array-like collection object as offered by jQuery and Laravel Collections.

composer req aimeos/map

Supported PHP versions:

  • PHP 8+ (4.x)
  • PHP 7.1+ (3.x)

Table of contents

Why PHP Map

Instead of:

$list = [['id' => 'one', 'value' => 'value1'], ['id' => 'two', 'value' => 'value2'], null];
$list[] = ['id' => 'three', 'value' => 'value3'];    // add element
unset( $list[0] );                                   // remove element
$list = array_filter( $list );                       // remove empty values
sort( $list );                                       // sort elements
$pairs = array_column( $list, 'value', 'id' );       // create ['three' => 'value3']
$value = reset( $pairs ) ?: null;                    // return first value

Only use:

$list = [['id' => 'one', 'value' => 'value1'], ['id' => 'two', 'value' => 'value2'], null];
$value = map( $list )                                // create Map
    ->push( ['id' => 'three', 'value' => 'value3'] ) // add element
    ->remove( 0 )                                    // remove element
    ->filter()                                       // remove empty values
    ->sort()                                         // sort elements
    ->col( 'value', 'id' )                           // create ['three' => 'value3']
    ->first();                                       // return first value

You can still use:

$map[] = ['id' => 'three', 'value' => 'value3'];
$value = $map[0];
count( $map );
foreach( $map as $key => value );

Use callbacks:

Also, the map object allows you to pass anonymous functions to a lot of methods, e.g.:

$map->each( function( $val, $key ) {
	echo $key . ': ' . $val;
} );

jQuery style:

If your map elements are objects, you can call their methods for each object and get the result as new map just like in jQuery:

// MyClass implements setStatus() (returning $this) and getCode() (initialized by constructor)

$map = Map::from( ['a' => new MyClass( 'x' ), 'b' => new MyClass( 'y' )] );
$map->setStatus( 1 )->getCode()->toArray();

This will call setStatus( 1 ) on both objects. If setStatus() implementation returns $this, the new map will also contain:

['a' => MyClass(), 'b' => MyClass()]

On those new map elements, getCode() will be called which returns x for the first object and y for the second. The map created from the results of getCode() will return:

['a' => 'x', 'b' => 'y']

Methods

<nav>

<a href="#is_map-function">function is_map</a> <a href="#map-function">function map</a> <a href="#__construct">__construct</a> <a href="#__call">__call</a> <a href="#__callstatic">__callStatic</a> <a href="#after">after</a> <a href="#all">all</a> <a href="#any">any</a> <a href="#arsort">arsort</a> <a href="#arsorted">arsorted</a> <a href="#asort">asort</a> <a href="#asorted">asorted</a> <a href="#at">at</a> <a href="#avg">avg</a> <a href="#before">before</a> <a href="#bool">bool</a> <a href="#call">call</a> <a href="#cast">cast</a> <a href="#chunk">chunk</a> <a href="#clear">clear</a> <a href="#clone">clone</a> <a href="#col">col</a> <a href="#collapse">collapse</a> <a href="#combine">combine</a> <a href="#concat">concat</a> <a href="#contains">contains</a> <a href="#copy">copy</a> <a href="#count">count</a> <a href="#countby">countBy</a> <a href="#dd">dd</a> <a href="#delimiter">delimiter</a> <a href="#diff">diff</a> <a href="#diffassoc">diffAssoc</a> <a href="#diffkeys">diffKeys</a> <a href="#dump">dump</a> <a href="#duplicates">duplicates</a> <a href="#each">each</a> <a href="#empty">empty</a> <a href="#equals">equals</a> <a href="#every">every</a> <a href="#except">except</a> <a href="#explode">explode</a> <a href="#fill">fill</a> <a href="#filter">filter</a> <a href="#find">find</a> <a href="#findkey">findKey</a> <a href="#first">first</a> <a href="#firstkey">firstKey</a> <a href="#flat">flat</a> <a href="#flatten">flatten</a> <a href="#flip">flip</a> <a href="#float">float</a> <a href="#from">from</a> <a href="#fromjson">fromJson</a> <a href="#get">get</a> <a href="#getiterator">getIterator</a> <a href="#grep">grep</a> <a href="#groupby">groupBy</a> <a href="#has">has</a> <a href="#if">if</a> <a href="#ifany">ifAny</a> <a href="#ifempty">ifEmpty</a> <a href="#implements">implements</a> <a href="#in">in</a> <a href="#includes">includes</a> <a href="#index">index</a> <a href="#insertafter">insertAfter</a> <a href="#insertat">insertAt</a> <a href="#insertbefore">insertBefore</a> <a href="#int">int</a> <a href="#intersect">intersect</a> <a href="#intersectassoc">intersectAssoc</a> <a href="#intersectkeys">intersectKeys</a> <a href="#is">is</a> <a href="#isempty">isEmpty</a> <a href="#islist">isList</a> <a href="#isobject">isObject</a> <a href="#isnumeric">isNumeric</a> <a href="#isscalar">isScalar</a> <a href="#issole">isSole</a> <a href="#isstring">isString</a> <a href="#join">join</a> <a href="#jsonserialize">jsonSerialize</a> <a href="#keys">keys</a> <a href="#krsort">krsort</a> <a href="#krsorted">krsorted</a> <a href="#ksort">ksort</a> <a href="#ksorted">ksorted</a> <a href="#last">last</a> <a href="#lastkey">lastKey</a> <a href="#ltrim">ltrim</a> <a href="#map">map</a> <a href="#max">max</a> <a href="#merge">merge</a> <a href="#method">method</a> <a href="#min">min</a> <a href="#none">none</a> <a href="#nth">nth</a> <a href="#offsetexists">offsetExists</a> <a href="#offsetget">offsetGet</a> <a href="#offsetset">offsetSet</a> <a href="#offsetunset">offsetUnset</a> <a href="#only">only</a> <a href="#order">order</a> <a href="#pad">pad</a> <a href="#partition">partition</a> <a href="#percentage">percentage</a> <a href="#pipe">pipe</a> <a href="#pluck">pluck</a> <a href="#pop">pop</a> <a href="#pos">pos</a> <a href="#prefix">prefix</a> <a href="#prepend">prepend</a> <a href="#pull">pull</a> <a href="#push">push</a> <a href="#put">put</a> <a href="#random">random</a> <a href="#reduce">reduce</a> <a href="#reject">reject</a> <a href="#rekey">rekey</a> <a href="#remove">remove</a> <a href="#replace">replace</a> <a href="#restrict">restrict</a> <a href="#reverse">reverse</a> <a href="#reversed">reversed</a> <a href="#rsort">rsort</a> <a href="#rsorted">rsorted</a> <a href="#rtrim">rtrim</a> <a href="#search">search</a> <a href="#sep">sep</a> <a href="#set">set</a> <a href="#shift">shift</a> <a href="#shuffle">shuffle</a> <a href="#shuffled">shuffled</a> <a href="#skip">skip</a> <a href="#slice">slice</a> <a href="#sliding">sliding</a> <a href="#sole">sole</a> <a href="#some">some</a> <a href="#sort">sort</a> <a href="#sorted">sorted</a> <a href="#splice">splice</a> <a href="#strafter">strAfter</a> <a href="#strbefore">strBefore</a> <a href="#strcompare">strCompare</a> <a href="#strcontains">strContains</a> <a href="#strcontainsall">strContainsAll</a> <a href="#strends">strEnds</a> <a href="#strendsall">strEndsAll</a> <a href="#string">string</a> <a href="#strlower">strLower</a> <a href="#strreplace">strReplace</a> <a href="#strstarts">strStarts</a> <a href="#strstartsall">strStartsAll</a> <a href="#strupper">strUpper</a> <a href="#suffix">suffix</a> <a href="#sum">sum</a> <a href="#take">take</a> <a href="#tap">tap</a> <a href="#times">times</a> <a href="#to">to</a> <a href="#toarray">toArray</a> <a href="#tojson">toJson</a> <a href="#toreversed">toReversed</a> <a href="#tosorted">toSorted</a> <a href="#tourl">toUrl</a> <a href="#transform">transform</a> <a href="#transpose">transpose</a> <a href="#traverse">traverse</a> <a href="#tree">tree</a> <a href="#trim">trim</a> <a href="#uasort">uasort</a> <a href="#uasorted">uasorted</a> <a href="#uksort">uksort</a> <a href="#uksorted">uksorted</a> <a href="#unflatten">unflatten</a> <a href="#union">union</a> <a href="#unique">unique</a> <a href="#unshift">unshift</a> <a href="#usort">usort</a> <a href="#usorted">usorted</a> <a href="#values">values</a> <a href="#walk">walk</a> <a href="#where">where</a> <a href="#with">with</a> <a href="#zip">zip</a>

</nav>

Create

  • function map() : Creates a new map from passed elements
  • __construct() : Creates a new map
  • clone() : Clones the map and all objects within
  • copy() : Creates a new copy
  • explode() : Splits a string into a map of elements
  • fill() : Creates a new map filled with given value
  • from() : Creates a new map from passed elements
  • [fromJs
View on GitHub
GitHub Stars4.2k
CategoryDevelopment
Updated6h ago
Forks16

Languages

PHP

Security Score

100/100

Audited on Apr 7, 2026

No findings