/** * 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); }