Articles of итератор

RecursiveIteratorIterator: включить каталог и php-файлы в zip

У меня есть скрипт, который поддерживает ZIPS-каталоги, но вам также нужно добавить * .php-файлы. Проблема с ошибкой возникает при добавлении чего-то типа ../index.php. Ошибка, созданная по сценарию ниже: Fatal error: Uncaught exception 'UnexpectedValueException' with message 'RecursiveDirectoryIterator::__construct(../index.php): failed to open dir: Not a directory' in /home/mathtest/public_html/trig/admin/save.php:23 Stack trace: #0 /home/mathtest/public_html/trig/admin/save.php(23): RecursiveDirectoryIterator->__construct('../index.php') #1 {main} thrown in /home/mathtest/public_html/trig/admin/save.php […]

получение суммарных массивов счетчиков многомерного массива

Мне интересно, есть ли простой способ получить количество вложенных массивов внутри одного многомерного массива. Вот простой пример. $a = array ( 'x' => array ( 0 => 'a', 1 => 'b', 2 => 'c', 'text' => array ( 0 => 'foo', 1 => 'bar', 2 => 'tar', ), 3 => array ( 'color' => array […]

Как игнорировать каталоги с помощью RecursiveIteratorIterator?

Я попытался несколько методов игнорировать некоторые каталоги, используя RecursiveIteratorIterator в файловой системе. Для примера скажем, я хочу игнорировать следующий каталог: /cache . Мой Iterator выглядит так: //$dirname is root $directory = new RecursiveDirectoryIterator($dirname); $mega = new RecursiveIteratorIterator($directory, RecursiveIteratorIterator::SELF_FIRST); foreach ($mega as $fileinfo) { echo $fileinfo; } Я мог игнорировать некоторые расширения файлов с помощью pathinfo […]

Сортировка файлов по каталогу с помощью каталога DirectoryTreeIterator

Я нашел пару вопросов ( этот и этот вопрос ), связанные с итераторами SPL, но я не уверен, насколько они полезны в моем случае, поскольку я использую довольно высокий уровень расширения RecursiveIteratorIterator ; DirectoryTreeIterator . Может ли кто-нибудь, возможно, показать мне, как изменить DirectoryTreeIterator или как отсортировать возвращаемый массив по каталогу после того, как он […]

Почему isDot () терпит неудачу? (PHP)

Я завершаю сегмент кода, в котором перечислены файлы в каталоге. У меня нет проблем с перечислением файлов в каталоге, но по какой-то причине я могу заставить метод isDot () работать, чтобы убедиться, что файл не является. или ".." . Ниже приведена следующая ошибка: Fatal error: Call to undefined method SplFileInfo::isDot() in …. Прежде чем переключиться […]

В чем разница между генератором и массивом?

Сегодня команда PHP выпустила версию PHP 5.5.0 , которая включает поддержку генераторов . Читая документацию , я заметил, что она делает именно то, что она может сделать с массивом. Пример генератора PHP-команды : // Only PHP 5.5 function gen_one_to_three() { for ($i = 1; $i <= 3; $i++) { // Note that $i is preserved […]

Итерируемые объекты и тип массива намекают?

У меня есть много функций, которые либо имеют намеки типа для массивов, либо используют is_array() для проверки is_array() переменной. Теперь я начинаю использовать объекты, которые являются итерабельными. Они реализуют Iterator или IteratorAggregate . Будут ли они приняты в качестве массивов, если они пройдут через намеки типа или is_array() ? Если мне нужно изменить свой код, […]

PHP – Причины использования итераторов?

Сегодня я изучал руководство и замечал различные итераторы . Мне кажется, что все они несколько бессмысленны; Я не вижу причины использовать их, если вы предпочитаете их синтаксис, или не знаете, как написать рекурсивную функцию. Существуют ли какие-либо причины использовать встроенные итераторы в PHP, просто написав цикл или сделав рекурсивный метод? Я ищу только фактические ответы, […]

RecursiveIteratorIterator и RecursiveDirectoryIterator для вложенных списков html

Вот мой php-скрипт: <?php $path = $_SERVER['DOCUMENT_ROOT'].'/test'; $objects = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path), RecursiveIteratorIterator::SELF_FIRST); foreach($objects as $name => $object){ echo $objects->getDepth() . " " . $object->getFilename() . "<br/>"; } ?> Здесь находится дерево директорий / файлов, в котором выполняется итерация скрипта. (Он находится в тривиальной корневой директории с именем $ _SERVER ['DOCUMENT_ROOT']. '/ Test'): /food /food/drinks […]