- array_map: documentation ( source)
- array_reduce: documentation ( source)
<?php
/**
* Behaves like a PHP array (unstructured)
*/
class Bag {
private $_data;
public function __construct(array $data) {
$this->data = $data;
}
public function some(Closure $fn) {
return new Bag(array_reduce($this->_data, function ($carry, $x) {
return $fn($x) || $carry;
}, false));
}
public function every(Closure $fn) {
return new Bag(array_reduce($this->_data, function ($carry, $x) {
return $fn($x) && $carry;
}, true));
}
public function reduce(Closure $fn) {
return new Bag(array_reduce($this->_data, $fn));
}
public function map(Closure $fn) {
return new Bag(array_map($fn, $this->_data));
}
}