示例#1
0
/**
 * 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));
}
示例#2
0
/**
 * 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);
}