Форматированный вывод в файл в PHP

Базы данных SQL это хорошо, но это слишком мудрённое решение.
Без знания файлового ввода-вывода php бесполезен.
Мне потребовалось создать скрипт, который бы считывал содержимое директории и создавал список файлов в виде txt в определенном формате.

/* Считываем содержимое корневого каталога вирутального сервера */
$listf = './';
/* Сканируем каталог и помещаем содержимое в массив $filet */
$filet = scandir($listf);

/*Удивительно, но совершенно не явно, что переменная $filet на самом деле является массивом - таблицей, содержащей ячейки типа индекс => переменная
/*создаем переменную -- счётчик */
$i=0;
/*Создаем цикл "покуда" переменная $i не станет равной последнему индексу массива $filet*/
while($i != sizeof($filet)) {
    pfintf('<br>#: %s, fn: %s, $i, $filet[$i]);
    $i++;
};
/*Сей цикл выводит список файлов в текущий скрипт php, однако нам нужно направить его в файл*/

$fo = fopen("./text/test.txt", 'w+') or die ("<br> неудача");
fwrite($fo, "Тест записи"."\n");
$i=0; /*Обнуляем переменную %i для повторения цикла, но с файлом.

while($i != sizeof($filet)){
fwrite($fo,$i."\t".$filet[$i]."\n");
        $i++;
};

fclose($fo);

Весь код написан для представления на php.
Я обнулил переменную, поскольку она больше не нужна в предыдущем цикле, а в нынешнем я использовал её для повторения того же цикла, только с записью данных в файл.

Получаем файл с содержимым примерно таким:

Тест записи
0       .
1       ..
2       .htaccess
3       .scriptdeb.php.swp
4       bkgrnd.jpg
5       certs

А вывод на странице получаем таким:

# 0, fn .
# 1, fn ..
# 2, fn .htaccess

Согласно тому, что было написано в коде.
Теперь проблема стрима в файл решена.
Основная проблема была в том, что:

  • Список файлов представляется в виде массива;
  • Массив является двумерным, содержащим индекс и переменную;
  • Массив может содержать любые типы переменных;
  • Переменные доступны по имени переменной и её индексу $a[i]
  • Для доступа к элементам массива необходимо создавать цикл, подставляющий индекс переменной массива;
  • Конкатенация в функции fwrite реализована следующим образом:
    fwrite($file, «Текст:».$var1.» Текст:».$var2); То-есть применяется символ точки;
  • Не забываем закрывать файл.

Цели работы с массивами:
Получить информацию в виде списка.
Передать её в базу данных, или получить из базы данных в виде массива.
Массив это фактически представление данных в файле, только файл этот виртуальный.
Для сохранности данных массивы необходимо сохранять в энергонезависимую память.

 

Комментарии

Популярные сообщения из этого блога

Подключение локального репозтория для debian/ubuntu/mint/astra включая установочный диск

Как пользоваться LibreCAD так, чтобы было удобно.

LibreCAD шрифты