/** * @param mixed $v0 - left value * @param mixed $v1 - right value * @param mixed|null $k0 - left key * @param mixed|null $k1 - right key * @return int */ public function compare($v0, $v1, $k0 = null, $k1 = null) { $lhs = $this->primary->compare($v0, $v1, $k0, $k1); if ($lhs === 0) { return $this->secondary->compare($v0, $v1, $k0, $k1); } else { return $lhs; } }
/** * @param mixed $v0 - left value * @param mixed $v1 - right value * @param mixed|null $k0 - left key * @param mixed|null $k1 - right key * @return int */ public function compare($v0, $v1, $k0 = null, $k1 = null) { return $this->comparer->compare($this->compareKeySelector->select($v0, $k0), $this->compareKeySelector->select($v1, $k1), $k0, $k1); }
/** * @param callable|array $comparer (v1, v2, k1?, k2?) -> int * @return OrderingGinq */ public function orderWithDesc($comparer = null) { $comparer = ComparerResolver::resolve($comparer, Comparer::getDefault()); $comparer = new ReverseComparer($comparer); return new OrderingGinq($this->getIterator(), $comparer); }
/** * @param callable|array $comparer (v1, v2, k1?, k2?) -> int * @return OrderingGinq */ public function thenWithDesc($comparer) { $comparer = ComparerResolver::resolve($comparer, Comparer::getDefault()); $comparer = new ReverseComparer($comparer); $comparer = new CompoundComparer($this->comparer, $comparer); return new OrderingGinq($this->it, $comparer); }
/** * @param mixed $v0 - left value * @param mixed $v1 - right value * @param mixed|null $k0 - left key * @param mixed|null $k1 - right key * @return int */ public function compare($v0, $v1, $k0 = null, $k1 = null) { // flip return $this->comparer->compare($v1, $v0, $k1, $k0); }