LimitIterator example


function twig_slice(Environment $env$item$start$length = null, $preserveKeys = false)
{
    if ($item instanceof \Traversable) {
        while ($item instanceof \IteratorAggregate) {
            $item = $item->getIterator();
        }

        if ($start >= 0 && $length >= 0 && $item instanceof \Iterator) {
            try {
                return iterator_to_array(new \LimitIterator($item$start, null === $length ? -1 : $length)$preserveKeys);
            } catch (\OutOfBoundsException $e) {
                return [];
            }
        }

        $item = iterator_to_array($item$preserveKeys);
    }

    if (\is_array($item)) {
        return \array_slice($item$start$length$preserveKeys);
    }

    
 else {
            $lineGenerator = LineReader::readLines($file);
        }

        if (!\is_int($offset)) {
            $offset = 0;
        }
        if (!\is_int($limit)) {
            $limit = -1;
        }

        $reader = new LimitIterator($lineGenerator$offset$limit);

        $result = [];
        foreach ($reader as $line) {
            $result[] = $this->parseLine($line);
        }

        return $result;
    }

    /** * @param string $filePath * * @return int */
Home | Imprint | This part of the site doesn't use cookies.