Array manipulation extension for PHP.
This repository has been archived on 2020-03-30. You can view files and clone it, but cannot push or open issues or pull requests.
Go to file
CismonX bfecefbdee Add .travis.yml. Add tests. 2018-03-23 17:29:34 +08:00
stubs update 2018-03-23 17:06:05 +08:00
tests Add .travis.yml. Add tests. 2018-03-23 17:29:34 +08:00
.gitignore update 2018-03-21 16:21:28 +08:00
.travis.yml Add .travis.yml. Add tests. 2018-03-23 17:29:34 +08:00
LICENSE initial commit 2018-03-20 22:44:25 +08:00
README.md Add .travis.yml. Add tests. 2018-03-23 17:29:34 +08:00
collections.c update 2018-03-23 17:06:05 +08:00
collections_fe.c update 2018-03-23 17:06:05 +08:00
collections_methods.c update 2018-03-23 17:06:05 +08:00
config.m4 Add .travis.yml. Add tests. 2018-03-23 17:29:34 +08:00
config.w32 indent with spaces instead of tabs 2018-03-21 16:26:14 +08:00
php_collections.h update 2018-03-23 17:06:05 +08:00
php_collections_fe.h update 2018-03-23 17:06:05 +08:00

README.md

ext-collections

Travis-CI MIT license

1. Introduction

This PHP extension provides a set of useful functional-style operations on PHP arrays, which makes array manipulation simple and scalable.

Method names and functionalities are inspired by Kotlin.Collections.

It may take me a really long time to fully implement this extension. Feel free to contribute.

2. Documentation

See stubs directory for signature of all classes and methods of this extension, with PHPDoc.

3. Example

Here is a simple example.

$employees = [
    ['name' => 'Alice', 'sex' => 'female', 'age' => 35],
    ['name' => 'Bob', 'sex' => 'male', 'age' => 29],
    ['name' => 'David', 'sex' => 'male', 'age' => 40],
    ['name' => 'Benjamin', 'sex' => 'male', 'age' => 32]
];
// Trying to get an array of names of male employees,
// sorted by the descending order of their age.
$names = Collection::init($employees)
    ->filter(function ($it) {
        return $it->get('sex') == 'male';
    })
    ->sortedByDescending(function ($it) {
        return $it->get('age');
    })
    ->map(function ($it) {
        return $it->get('name');
    })
    ->toArray();