public function __invoke(...$data) { $sort = _Array::sort(_Comparator::numeric()); $arr = $sort($data[0]); $length = count($arr); if ($length % 2) { return $arr[(int) floor($length / 2)]; } return ($arr[(int) floor($length / 2)] + $arr[(int) floor($length / 2) - 1]) / 2; }
public function testSortMultipleInvertMap_Map_Implode() { $mapval = function ($obj) { return $obj->val; }; $mapf = function ($obj) { return $obj->f; }; $a = new \stdClass(); $a->val = 1; $a->f = 2; $b = new \stdClass(); $b->val = 2; $b->f = 1; $c = new \stdClass(); $c->val = 3; $c->f = 1; $d = new \stdClass(); $d->val = 4; $d->f = 2; $data = [$c, $b, $a, $d]; $node = _Array::values()->sort(_Comparator::numeric()->map($mapf)->invert(), _Comparator::numeric()->invert()->map($mapval))->map($mapval)->implode(''); $this->assertEquals('4132', $node($data)); }
//int(10) $explode = _String::explode('.'); var_dump($explode('a.b')); $chain = $explode->implode('-'); var_dump($chain('a.b')); $map = $explode->map($fromHex)->implode('.'); var_dump($map('a.b')); $sort = _Array::sort(function ($a, $b) { return $a - $b; }); var_dump($sort([2, 5, 3, 4, 1])); //array(5) { // [0]=> // int(1) // [1]=> // int(2) // [2]=> // int(3) // [3]=> // int(4) // [4]=> // int(5) //} $string = 'a,3,e,22,a2,3e0,cf'; $explodeHexString = _Array::explode(',')->map(_String::trim()->then($fromHex))->sort(_Comparator::numeric()); print_r($explodeHexString($string)); $string = 'a,3,e,22,a2,3e0,cf'; $explodeHexString = _Array::explode(',')->sort(_Comparator::boolean()->map(_String::trim()->then($fromHex)->then(function ($e) { return $e % 5; })), _Comparator::numeric()->map(_String::trim()->then($fromHex))); print_r($explodeHexString($string));