Map
PHP arrays and collections made easy
Install / Use
/learn @aimeos/MapREADME
<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
