GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - izica/php-collection: Tools and utilities for working with arrays

BranchesTags
Open more actions menu

Latest commit

 

History

36 Commits
36 Commits

Folders and files

NameName
Last commit message
Last commit date
LICENSE
LICENSE
 
 
PhpCollection.php
PhpCollection.php
 
 
README.md
README.md
 
 
collect.php
collect.php
 
 
composer.json
composer.json
 
 

Repository files navigation

Php collection

inspired by Illuminate\Support\Collection and Lodash

Usage

composer require izica/php-collection

Notice

Every method will returns new collection, not mutated collection;

$collection = PhpCollection:collect([100, 200, 300, 400]);
$collection2 = $collection->filter(function($item){
    return $item > 200;
})

/*
    $collection != $collection2
*/

Documentation

  • collect
  • implode OR join
  • pluck
  • only
  • exclude
  • filter
  • map
  • keyBy
  • groupBy
  • find
  • some OR contains
  • every
  • sort
  • values
  • first
  • last
  • count
  • all or toArray
  • toJson

collect($array, $isSingleElement = false)

$products = [
    ["id" => 1, "name" => "product 1", "price" => 100],
    ["id" => 2, "name" => "product 2", "price" => 200],
    ["id" => 3, "name" => "product 3", "price" => 300]
];

$collection = PhpCollection:collect($products);

// make collection from single element
$collection = PhpCollection:collect($products[0], true);

implode($array = ", ", $serializer = "") OR join($array = ", ", $serializer = "")

$collection = PhpCollection:collect([100, "data", 300, 400])->implode();
/*
    100, data, 300, 400
*/

$products = [
    ["id" => 1, "name" => "product 1", "price" => 100],
    ["id" => 2, "name" => "product 2", "price" => 200],
    ["id" => 3, "name" => "product 3", "price" => 300]
];

// should return string
$serializer = function($item){
    return "{$item['name']}-{$item['price']}$"; // or for example -- return json_encode($item);
};

$collection = PhpCollection:collect($products)->implode(", ", $serializer);
/*
    product 1-100$, product 2-200$, product 3-300$
*/

pluck($key)

$products = [
    ["id" => 1, "name" => "product 1", "price" => 100],
    ["id" => 2, "name" => "product 2", "price" => 200],
    ["id" => 3, "name" => "product 3", "price" => 300]
];

$collection = PhpCollection:collect($products)->pluck("id")->all();
/*
    [1, 2, 3]
*/  

$collection = PhpCollection:collect($products)->pluck("name")->all();
/*
    ["product 1", "product 2", "product 3"]
*/ 

only($keys)

$products = [
    ["id" => 1, "name" => "product 1", "price" => 100],
    ["id" => 2, "name" => "product 2", "price" => 200],
    ["id" => 3, "name" => "product 3", "price" => 300]
];

$collection = PhpCollection:collect($products)->only(["id", "name"])->all();
/*
[
    ["id" => 1, "name" => "product 1"],
    ["id" => 2, "name" => "product 2"],
    ["id" => 3, "name" => "product 3"]
]
*/

$collection = PhpCollection:collect($products)->only(["id", "name" => "title"])->all();

/*
[
    ["id" => 1, "title" => "product 1"],
    ["id" => 2, "title" => "product 2"],
    ["id" => 3, "title" => "product 3"]
]
*/

exclude($keys)

$products = [
    ["id" => 1, "name" => "product 1", "price" => 100],
    ["id" => 2, "name" => "product 2", "price" => 200],
    ["id" => 3, "name" => "product 3", "price" => 300]
];

$collection = PhpCollection:collect($products)->exclude(["name"])->all();

/*
[
    ["id" => 1, "price" => 100],
    ["id" => 2, "price" => 200],
    ["id" => 3, "price" => 300]
]
*/

filter(function($item))

$products = [
    ["id" => 1, "name" => "product 1", "price" => 100],
    ["id" => 2, "name" => "product 2", "price" => 200],
    ["id" => 3, "name" => "product 3", "price" => 300]
];

$collection = PhpCollection:collect($products)
    ->filter(function($item){
        return $item["price"] > 100    
    })
    ->all();

/*
[
    ["id" => 2, "name" => "product 2", "price" => 200],
    ["id" => 3, "name" => "product 3", "price" => 300]
]
*/

map(function($item))

$products = [
    ["id" => 1, "name" => "product 1", "price" => 100],
    ["id" => 2, "name" => "product 2", "price" => 200],
    ["id" => 3, "name" => "product 3", "price" => 300]
];

$collection = PhpCollection:collect($products)
    ->map(function($item){
        $item["pricex2"] = $item["price"] * 2;
        return $item;   
    })
    ->all();

/*
[
    ["id" => 1, "name" => "product 1", "price" => 100, "pricex2" => 200],
    ["id" => 2, "name" => "product 2", "price" => 200, "pricex2" => 400],
    ["id" => 3, "name" => "product 3", "price" => 300, "pricex2" => 600]
]
*/

keyBy($key | function($item))

$products = [
    ["id" => 16, "name" => "product 1", "price" => 100],
    ["id" => 22, "name" => "product 2", "price" => 200],
    ["id" => 31, "name" => "product 3", "price" => 300]
];

$collection = PhpCollection:collect($products)->keyBy("id")->all();

/*
[
    16 => ["id" => 1, "name" => "product 1", "price" => 100, "pricex2" => 200],
    22 => ["id" => 2, "name" => "product 2", "price" => 200, "pricex2" => 400],
    31 => ["id" => 3, "name" => "product 3", "price" => 300, "pricex2" => 600]
]
*/

groupBy($key | function($item))

$products = [
    ["id" => 16, "category_id" => 1, "name" => "product 1", "price" => 100],
    ["id" => 22, "category_id" => 2, "name" => "product 2", "price" => 200],
    ["id" => 31, "category_id" => 2, "name" => "product 3", "price" => 300]
];

$collection = PhpCollection:collect($products)->groupBy("category_id")->all();

/*
[
    1 => [
        ["id" => 16, "category_id" => 1, "name" => "product 1", "price" => 100]
    ],
    2 => [
        ["id" => 22, "category_id" => 2, "name" => "product 2", "price" => 200],
        ["id" => 31, "category_id" => 2, "name" => "product 3", "price" => 300]
    ]   
]
*/

find(function($item))

some($value | function($item)) OR contains($value | function($item))

every(function($item))

sort(function($item))

sortBy($key, $asc = true)

values()

first()

last()

count()

all() OR toArray()

toJson()

zip()

TODO

dumpBrowser()

dump()

toCsv()

toXml()

shuffle()

random()

chunk()

unique("" | $key | function($item))

collapse()

diff($array)

has($key)

flip()

min("" | $key | function($item))

max("" | $key | function($item))

reduce($function)

About

Tools and utilities for working with arrays

Topics

arrayarrayscollectioncollectionsilluminatelibrarylodashphpphp-arrayphp-collectionphp-libraryphp-lodashphp5php56php7tooltoolsutilitiesutilityutils

Resources

Readme
MIT license
Activity

Stars

3 stars

Watchers

1 watching

Forks

0 forks
Report repository

Releases

Packages

Used by

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.