public function testExampleExtractKey() { $people = SampleDataLoader::getPeople(true); $peopleSeq = Sequence::make($people)->keyBy(fn\fnPluck('_id')); $keys1 = exampleExtractKeys1($peopleSeq); $keys2 = exampleExtractKeys2($peopleSeq); $keys3 = exampleExtractKeys3($peopleSeq); $this->assertEquals($keys1, $keys2); $this->assertEquals($keys2, $keys3); }
public function testCompareMulti() { $values = TestData::$fruit; usort($values, fn\fnCompareMulti(array(fn\fnCompareField('name')))); $this->assertNotEquals(TestData::$fruit, $values); $this->assertEquals(Sequence::make(TestData::$fruit)->pluck('name')->sort()->toValues(), array_map(fn\fnPluck('name'), $values)); $values = array(array('name' => 'Terry', 'age' => 22), array('name' => 'Bob', 'age' => 30), array('name' => 'Ann', 'age' => 30), array('name' => 'Sam', 'age' => 19), array('name' => 'Rob', 'age' => 30), array('name' => 'Robert', 'age' => 55)); $expected = array(array('name' => 'Robert', 'age' => 55), array('name' => 'Ann', 'age' => 30), array('name' => 'Bob', 'age' => 30), array('name' => 'Rob', 'age' => 30), array('name' => 'Terry', 'age' => 22), array('name' => 'Sam', 'age' => 19)); usort($values, fn\fnCompareMulti(array(fn\fnCompareFieldRev('age'), fn\fnCompareField('name')))); $this->assertEquals($expected, $values); }
/** * @param array[] $employees * @return array */ function exampleKeyByIdSortByEmployeeLastName2($employees) { $employeesSortedById = Sequence::make($employees)->keyBy(fn\fnPluck('employeeId'))->asort(fn\fnCompareField('lastName'))->to_a(); return $employeesSortedById; }
/** * Generate a pluck function that returns the value of a field, or null if the field does not exist. * * @param string $key - the name / key, of the field to get the value from. * @param mixed $default - the default value to assign if the field does not exist. * @return callable */ public static function fnPluck($key, $default = null) { return fn\fnPluck($key, $default); }
/** * Generates a function that pulls a value from a field in the document and passes it to $fnMap. * * @param string $fieldName * @param Closure $fnMap($fieldValue) * @return Closure */ function fnMapFromField($fieldName, $fnMap) { return fn\fnPipe(fn\fnPluck($fieldName), $fnMap); }