/** * f\contains_in($coll, $in) * * Returns whether a nested structure exists or not. * * f\contains_in(array('a' => array('a1' => 1)), array('a')); * => true * * f\contains_in(array('a' => array('a1' => 1)), array('a', 'a1)); * => true * * f\contains_in(array('a' => array('a1' => 1)), array('a', 'a2)); * => false * * f\contains_in(array('a' => array('a1' => 1)), array('b')); * => false * * f\contains_in(array('a' => array('a1' => 1)), array('b', 'b1')); * => false * * // returns false with an empty in * f\contains_in(array('a' => 1), array()); * => false * * // supports infinite nesting * f\contains_in(array('a', 'a1', 'a1I', 'a1IA'), array('a', 'a1', 'a1I', 'a1IA')); * => true */ function contains_in($coll, $in) { $arrayIn = f\_coll_in($coll, $in); if ($arrayIn === false) { return false; } return f\contains($arrayIn, f\last($in)); }
/** * f\get_in_or($coll, $in, $default) * * Returns a element of a collection in a nested structure in. * The default is returned if the in does not exist. * * f\get_in_or(array('a' => array('a1' => 'foo'), array('a', 'a1')); * => 'foo' * * f\get_in_or(array('a' => array('a1' => 'foo'), array('a', 'a2'), 'bar'); * => 'bar' */ function get_in_or($coll, $in, $default) { $arrayIn = f\_coll_in($coll, $in); if ($arrayIn === false) { return $default; } return f\get_or($arrayIn, f\last($in), $default); }
/** * @dataProvider provideLast */ public function testLast($expected, $coll) { $this->assertSame($expected, f\last($coll)); }
/** * @Given /^there is a user "([^"]*)" with password "([^"]*)"$/ */ public function thereIsAUserWithPassword($username, $password) { $this->users[] = ['id' => count($this->users) ? f\last(f\keys($this->users)) : 1, 'username' => $username, 'password' => $password]; }
/** * f\drop_last($coll) * * Returns an array based on coll with the last element removed. * * f\drop_last(array('a' => 1, 'b' => 2)); * => array('a' => 1) */ function drop_last($coll) { $result = f\to_array($coll); unset($result[f\last(f\keys($result))]); return $result; }