PHP5.3 で遊んでみました。
関数を引数に渡すことができるようになったので、配列ラッパクラスを定義すれば、こんなことができます。
<?php $ary = new Ary(array(3, 2)); $ary->map(function($v) { return $v * 2; })->each(function($v) { echo "{$v}\n"; });
結果
6 4
Ruby なんかと比べればやはり冗長さは否めませんが、前よりは楽しくなっていると思います。
Ary クラスの実装です。
<?php class Ary { var $ary; function __construct($ary = array()) { $this->ary = $ary; } function map($blk) { $ary = array(); $this->each(function($v) use (&$blk, &$ary) { $ary[] = $blk($v); }); return new Ary($ary); } function each($blk) { foreach ($this->ary as $v) $blk($v); } };