За последние 24 часа нас посетили 20808 программистов и 1125 роботов. Сейчас ищут 379 программистов ...

Не получается решить задачу...

Тема в разделе "PHP для новичков", создана пользователем Andbaik, 2 окт 2020.

  1. Andbaik

    Andbaik Новичок

    С нами с:
    2 окт 2020
    Сообщения:
    3
    Симпатии:
    0
    В папке есть фалы (txt), нужно определить эти файлы, и считать построчно в переменную.
    Вот код, но выдает ответом NULL
    PHP:
    1. <?php
    2. $dir    = 'files_ns';
    3. $BaseFails = [];
    4. $failes = scandir($dir);
    5. foreach ($failes as $value) {
    6.     if (substr($value,0,2)=='ns'){
    7.         $BaseFails[]=$value;
    8. }
    9. }
    10.  
    11. $Data = [];
    12.     for ($i=0; $i < count($BaseFails); $i++) {
    13.         $Data[] = StrFails($BaseFails[$i]);
    14.     }
    15.  
    16. foreach ($Data as $value) {
    17.     echo $value.'<br>';
    18. }
    19.  
    20.  
    21. function StrFails($BaseFails)
    22. {
    23.     $handle = @fopen("$BaseFails", "r");
    24.     if ($handle) {
    25.         $Data = array();
    26.         while (($buffer = fgets($handle, 4096)) !== false) {
    27.             $Data[] = $buffer;
    28.         }
    29.         if (!feof($handle)) {
    30.         echo "Error: unexpected fgets() fail\n";
    31.         }
    32.         fclose($handle);
    33.     }
    34.     return $Data;
    35. }
    36.        
    37. ?>
     
    #1 Andbaik, 2 окт 2020
    Последнее редактирование: 2 окт 2020
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.734
    Симпатии:
    1.315
    Адрес:
    Лень
    это что за магия делает ?
     
  3. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.476
    Симпатии:
    281
    PHP:
    1. <?php
    2. foreach (glob("./dirname/*.txt") as $filename)
    3. {
    4.     echo file_get_contents($filename ) . "<br />";
    5. }
    6. ?>
     
    #3 Drunkenmunky, 2 окт 2020
    Последнее редактирование: 2 окт 2020
    Andbaik нравится это.
  4. Andbaik

    Andbaik Новичок

    С нами с:
    2 окт 2020
    Сообщения:
    3
    Симпатии:
    0

    Чтение файла
    --- Добавлено ---
    Как бы все это прочитать построчно в переменную $Data
     
  5. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.476
    Симпатии:
    281
    Если нужен массив путей к файлам, то $Data = glob("./dirname/*.txt");
    Если в этом массиве должно быть содержимое $filename, в каждом элементе отдельно, в одну строку, то вместо echo file_get_contents($filename ) . "<br />";
    впишите $Data[] = file_get_contents($filename );
    Если в виде массива строк, то $Data[] = file($filename );

    Чтобы увидеть содержимое массива $Data, в нужном месте введите print_r($Data);
     
    #5 Drunkenmunky, 5 окт 2020
    Последнее редактирование: 5 окт 2020
    Andbaik нравится это.
  6. Andbaik

    Andbaik Новичок

    С нами с:
    2 окт 2020
    Сообщения:
    3
    Симпатии:
    0
    Все решилось 7 строчками кода! Спасибо Drunkenmunky!

    PHP:
    1. <?php
    2. $dir    = 'files_ns';
    3. $Data = [];
    4.  
    5.     foreach (glob("./$dir/ns*.*") as $filename)
    6.     {
    7.         $Data[] = file($filename);
    8.     }
    9.  
    10. /*  Вывод массива
    11. foreach ($Data as $Mass) {
    12.     foreach ($Mass as $value) {
    13.         echo $value;
    14.     }
    15. }
    16. */
    17. ?>