PHPの配列操作を楽にするUnderscore.phpが便利だった

Underscore.phpについて

github.com

同じような名前のライブラリがあったりしますが、この記事ではこのリポジトリーで公開されているライブラリーのことについて書いています。

公式のドキュメントはこちら。

Underscore.php - The PHP Manipulation Toolbelt

似ているライブラリー

github.com

github.com

上記の2つも似ている(brianhaveri/Underscore.phpに至っては名前も同じ)のですが、

今回紹介したUnderscore.phpが現時点ではメンテされていそうなので、Underscore.phpを使ってみました。

便利

JavaScriptUnderscore.jslodashを使ったことがあれば大体使い方がわかると思います。

<?php
require 'vendor/autoload.php';

use Underscore\Types\Arrays as _; // Underscoreっぽく使いたいのでエイリアスを設定

$arr = new _(range(1, 100));
$result = $arr->filter(function($value) { // 偶数の値のみになるようにフィルタリング
    return $value % 2 == 0;
})->each(function($value) { // それぞれの要素を10倍にする
    return $value * 10;
})->reject(function($value) { // 500以下の値を除外する
    return $value <= 500;
})->sort(null, 'desc')->first(5); // 降順で並び替えて、要素を先頭から5つ取得する
var_dump($result);
$ php main.php
object(Underscore\Types\Arrays)#2 (2) {
  ["typecaster":protected]=>
  string(7) "toArray"
  ["subject":protected]=>
  array(5) {
    [0]=>
    int(1000)
    [1]=>
    int(980)
    [2]=>
    int(960)
    [3]=>
    int(940)
    [4]=>
    int(920)
  }
}

上記のコードは特に意味のあるコードではありませんが、PHPの配列関数(array_*)は微妙に使いにくいところがあるので、Underscore.jsなどでお馴染みの感じでPHPでも配列を扱えるのはなかなかありがたいです。

この記事とサンプルコードをみて、少しでも便利だと思ったら公式のドキュメントを覗いてみてください。

追記(2016/09/16)

レバテック フリーランスフリーエンジニア「お役立ちコンテンツ」でご紹介いただきました。

freelance.levtech.jp

余談ですが、私は2016/09/16時点でフリーランスエンジニアではありません。