コード例 #1
0
ファイル: GroupJoinIterator.php プロジェクト: gunjiro/ginq
 protected function fetchIfValid()
 {
     if ($this->outer->valid()) {
         $outerV = $this->outer->current();
         $outerK = $this->outer->key();
         $compareKey = $this->outerCompareKeySelector->select($outerV, $outerK);
         $inners = $this->lookup->get($compareKey);
         $inners = new GroupingGinq(IteratorUtil::iterator($inners), $compareKey);
         $this->v = $this->resultValueSelector->select($outerV, $inners, $outerK, $compareKey);
         $this->k = $this->outer->key();
     }
 }
コード例 #2
0
ファイル: Ginq.php プロジェクト: gunjiro/ginq
 /**
  * @param callable|array|string       $lookupKeySelector (v, k) -> v
  * @param callable|array|string|null  $elementSelector   (v, k) -> v
  * @param EqualityComparer|null       $eqComparer
  * @return LookupGinq
  */
 public function toLookup($lookupKeySelector, $elementSelector = null, $eqComparer = null)
 {
     $lookupKeySelector = SelectorResolver::resolve($lookupKeySelector, ValueSelector::getInstance());
     $elementSelector = SelectorResolver::resolve($elementSelector, ValueSelector::getInstance());
     $lookup = new LookupGinq(EqualityComparerResolver::resolve($eqComparer, EqualityComparer::getDefault()));
     $it = $this->getIterator();
     foreach ($it as $k => $v) {
         $lookup->put($lookupKeySelector->select($v, $k), $elementSelector->select($v, $k));
     }
     return $lookup;
 }