YaLinqo\Enumerable::toLookup PHP Method

toLookup() public method

Syntax: toLookup ([keySelector {(v, k) ==> key} [, valueSelector {(v, k) ==> value}]])

The toLookup method returns an array, a one-to-many dictionary that maps keys to arrays of values.

public toLookup ( callable | null $keySelector = null, callable | null $valueSelector = null ) : array
$keySelector callable | null {(v, k) ==> key} A function to extract a key from each element. Default: key.
$valueSelector callable | null {(v, k) ==> value} A transform function to produce a result value from each element. Default: value.
return array An array that contains keys and value arrays selected from the input sequence.
    public function toLookup($keySelector = null, $valueSelector = null)
    {
        $keySelector = Utils::createLambda($keySelector, 'v,k', Functions::$key);
        $valueSelector = Utils::createLambda($valueSelector, 'v,k', Functions::$value);
        $lookup = [];
        foreach ($this as $k => $v) {
            $lookup[$keySelector($v, $k)][] = $valueSelector($v, $k);
        }
        return $lookup;
    }