/** * Helper method to perform actual mapping * @param array|\Traversable $inner * @param array|\Traversable $outer * @param callable $callable */ private function mapOn($inner, $outer, callable $callable) { $this->innerGroup = []; foreach ($outer as $k => $o) { $group = new qinq\Collection(); foreach ($inner as $i) { $check = $callable($o, $i); if ($check === true) { $group->add($i); } } $this->innerGroup[$k] = $group; } }