Как вывести топ ячеек из файла

Печать RSS
322

И

Оранжевые штаны
0
ОН наверно хотел так:
text|text|text|text|text|4|text|
text|text|text|text|text|2|text|
text|text|text|text|text|1|text|
text|text|text|text|text|3|text|
И что бы после выполнения скрипта получалось так:
text|text|text|text|text|1|text|
text|text|text|text|text|2|text|
text|text|text|text|text|3|text|
text|text|text|text|text|4|text|
Изменил: Игорь (12.01.2010 / 05:06)

2000 лет д.н.э.
0
Ну так и получилось))
И

Оранжевые штаны
0
<?
Array ( [0] => text|text|text|text|text|4|text| [1] => text|text|text|text|text|2|text| [2] => text|text|text|text|text|1|text| [3] => text|text|text|text|text|3|text| ) //выполнение скрипта
Содержимое file.txt:
text|text|text|text|text|4|text|
text|text|text|text|text|2|text|
text|text|text|text|text|1|text|
text|text|text|text|text|3|text|
Не сортерует)
Изменил: Игорь (12.01.2010 / 05:21)

2000 лет д.н.э.
0
<?
$file = file('file.txt');
$s = 100;
foreach($file as $line=>$data){
$d = explode('|',$data);
if($d[5]>0){
$key[$d[5].$s] = $line;
if($s<=998){
$s++;
}else{
$s = 100;
}}}
ksort($key);
foreach($key as $i=>$k){
$result[]=$file[$k]; }
print_r($result);
unset($file);
unset($key);
да, поторопился там маленькоsmile
этот работать должен как надоsmile пришлось попотеть что бы уникальные ключи генеритьsmile и то фиг его знает, не проверял как работает.
Файлы - ацтой, адназначна.
Изменил: ramzes (12.01.2010 / 06:43)
Автор
Голубые штаны
0
24. ramzes, ХЗ почему, но все равно не сортирует и первую строчку выводит пустую
Я делал таким макаром:
$file = file($datarand); 
$s = 100; 
foreach($file as $line=>$data){ 
$d = explode('|',$data); 
if($d[3]>0){ 
$key[$d[3].$s] = $line; 
if($s<=998){ 
$s++; 
}else{ 
$s = 100; 
}}} 
ksort($key); 
foreach($key as $i=>$k){
$result[]=$file[$k]; } 
unset($file); 
unset($key);
$result=implode("",$result);
if($result!=""){
$fp = fopen($datatop,"a+");
flock ($fp,LOCK_EX);
ftruncate ($fp,0);
fputs($fp,"$result\r\n");
fflush ($fp);
flock ($fp,LOCK_UN);
fclose($fp);
chmod ($fp, 0666); 
chmod ($datatop, 0666); 
}
$datarand - файл, ОТКУДА берутся данные
$datatop - файл, КУДА пишется кеш
Изменил: Дмитрий (13.01.2010 / 03:01)

2000 лет д.н.э.
0
Не может по определению пустых строк быть. Посмотри как формируется массив $кей, даже если бы каким то чудом попал бы пустой ключ то все равно к нему префикс $с прилип бы.
Это ты что то при записи не так сделал видимо, поставь print_r($key);
print_r($result);
и посмотри результат сортировки. Я вчера проверил, на пяти записях но все жеsmile не лучший ход но работало.
Автор
Голубые штаны
0
Я догадываюсь, откуда пустая строка берется...
"а+" пишет строку и оставляет указатель на последней ПУСТОЙ строке.
Возможно, потому что этот файл копируется, сортируется и перезаписывается, создается ВТОРАЯ пустая нижняя строка, которая и выводится на экран.
В принципе, так и есть, вот как копирнуть файл, чтобы в запись шли только записаные строки...
О

Землянин
0
LondoN_tm, неужели тебе сложно это на SQL сделать? Код станет всего в 2 строчки и гемороя меньше.
по существу когда данные будут за 1 мб file() будет грузить процессоре php, лучше на fopen поменять.
Автор
Голубые штаны
0
28. Aligan, дело в том, что я не знаю SQL. A скрипт я уже накатал на файлах. Осталось к нему топ прикрутить, с которым я и мучаюсь.

2000 лет д.н.э.
0
Да там знать то не чего, в частности для данного примера достаточно знать инсерт инто и селект. Это максимум 20 минут чтения и 20 минут проб. Попробуй. Потом еще спасибо скажешь что уговорилиsmile я тоже раньше думал мускул сложно, файлы сложнее и геморойнее из-за отсутствия гибкости.
Щас фиг заставишь что на файлах писать кроме счетчиковsmile
<?php
$stat = $mysql->query("SELECT * FROM topuser ORDER BY totalpost DESC;");
while( $print = $stat->fetch_assoc()){
print_r($print);
}
сравни? Вот на мускуле как этот твой скрипт будет выглядетьsmile проще просто не куда.
#25 implode через \r\n обьединяешь? По этому и пустая строка.
Изменил: ramzes (13.01.2010 / 09:20)
Стикеры / Теги / Правила / Топ тем / Топ постов / Поиск