[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Обратный вывод строк из CSV
linf
Вот так я вывожу строки из CSV файла по порядку:


PHP
$file File("base.csv");    
for (
$p=0;$p<count($file);$p++) {

      
$out explode("^"$file[$p]);
      echo 
htmlspecialchars($out[0]);
      echo 
htmlspecialchars($out[1]);
      echo 
htmlspecialchars($out[2]);
      echo 
htmlspecialchars($out[3]);
}


Нужно сделать, что бы значения выводились наоборот, самое "свежезаписаное" в верзу, итд...
Я попробовал сделать это так:

PHP
$file File("base.csv");    
for (
$p=count($file); $p>0$p--) {

$out explode("^"$file[$p]);
      echo 
htmlspecialchars($out[0]);
      echo 
htmlspecialchars($out[1]);
      echo 
htmlspecialchars($out[2]);
      echo 
htmlspecialchars($out[3]);
}


РАБОТАЕТ НЕ КОРРЕКТНО:
сначала выводит пустое поле (строка без данных)
потом выводит данные наоборот (как нужно) но теряется первая строка в файле.




Спустя 19 минут, 6 секунд (5.07.2009 - 05:01) kirik написал(а):
Попробуй так (про флаги читать тут):

PHP
$file file('base.csv'FILE_IGNORE_NEW_LINES FILE_SKIP_EMPTY_LINES);
for(
$i count($file); $i >= 0$i--)
{
    
$out explode('^'$file[$i]);
    echo 
htmlspecialchars($out[0]);
    echo 
htmlspecialchars($out[1]);
    echo 
htmlspecialchars($out[2]);
    echo 
htmlspecialchars($out[3]);
}

Спустя 8 часов, 10 минут, 46 секунд (5.07.2009 - 13:12) linf написал(а):
Теперь выводит все, но сначала по прежнему выводит пустой блок.

Пришлось сделать: $i = count($file) -1 (вычесть единичку)

Хотелось бы знать почему?


Спустя 4 часа, 6 минут, 19 секунд (5.07.2009 - 17:18) kirik написал(а):
Цитата (linf @ 5.07.2009 - 05:12)
но сначала по прежнему выводит пустой блок. Пришлось сделать: $i = count($file) -1 (вычесть единичку)

Да, правильно. Молоток! Я спросони ступил smile.gif

Цитата (linf @ 5.07.2009 - 05:12)
Хотелось бы знать почему?

Потому что count возвращает кол-во строк, начиная считать с единицы, а в массиве $file содержаться элементы начиная с нуля.
Тоесть файл получается такой (первое значение - порядковый номер в массиве (начиная с 0), второе - порядковый номер с 1):
Код
0 - первая строка
1 - вторая строка
2 - третья строка

строки у нас 3, а максимальный ключ элемента в массиве равен 2. Тоесть при первой иттерации цикла у нас получается так, что мы запрашиваем 3-тий ключ, которого не существует. Вот он и выводит пустую строку


_____________
Live in new format =)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.