[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Последние n-элементов массива
Hancock
Сразу скажу что программист из меня хреновый, поэтому нуждаюсь в вашей помощи.

Суть такова: имеется лог-файл с сожержанием в виде даты, названия композиции и т.д. (это отрывок из файла + постоянно новые данные дописываются в конец файла):
02/Jul/2012:11:24:17 +0400|/Non-Stop|0|Dj Smash and Chinkong - Lifemission
02/Jul/2012:11:28:41 +0400|/Non-Stop|0|Martin Solveig & Dragonette - Hello
02/Jul/2012:18:14:27 +0400|/Non-Stop|0|Alexandra Stan - Get Back (ASAP)
02/Jul/2012:19:10:03 +0400|/Non-Stop|1|Greg Parys - Why Dont We Just Fuck (Dj Viduta Remix)
02/Jul/2012:19:14:34 +0400|/Non-Stop|1|Drums Of London - Girls Girls Girls
02/Jul/2012:19:17:10 +0400|/Non-Stop|1|Pendulum - Crush



Нужно выдирать php-скриптом последние n-элементов и выводить их в таблицу так, чтобы в первом столце было время, а во втором название, я взял 15, и вот что нахимичил:
<?PHP
header('Content-Type: text/html; charset=windows-1251');
$data = file("c:\Program Files\Icecast2 Win32\logs\playlist.log");
$limit = count($data) - 16;

for($i=count($data);$i>$limit;$i--){
echo "<table align=\"center\" width=\"600\" bordercolor=\"#000\" border=\"1\" cellpadding=\"0\" rules=\"rows\">";
$mass = explode("|",$data[$i]);
$rest = substr($mass[0], -14, 8);
echo "<td width='65px'><b>$rest</b></td>";
echo "<td>$mass[3]</td>";
echo "<tr>";
echo "</table>";
}
?>


Как оказалось apache выдает ошибки, от чего собственно работа сайта тормозится, вот ошибки:
PHP Notice:  Undefined offset: 9993 in C:\\wamp\\www\\php\\playlist.php on line 8
PHP Notice: Undefined offset: 3 in C:\\wamp\\www\\php\\playlist.php on line 11

Выручайте господа программисты :unsure:



Спустя 4 минуты, 38 секунд (5.08.2012 - 20:55) Winston написал(а):
$data = file("c:\Program Files\Icecast2 Win32\logs\playlist.log");
$n = 10; // Сколько последних элементов надо выташить
print_r(array_slice($data, -1, $n));

Спустя 1 минута, 43 секунды (5.08.2012 - 20:56) Игорь_Vasinsky написал(а):
 $array = range(1,100);
$n = 15;

foreach($array as $key=>$value)
{
if($key > (sizeof($array)-1) - $n)
echo $value.'<br />';
}

Спустя 23 минуты, 36 секунд (5.08.2012 - 21:20) Hancock написал(а):
Winston, Игорь_Vasinsky спс за быстрые ответы, только вот как их именно под мою цель применить, я так понимаю это общие ответы? Будьте добры подскажите где править мой скрипт для получения, как сейчас есть таблицы с данными, только естественно без ошибок. Спасибо.

Спустя 10 минут, 53 секунды (5.08.2012 - 21:31) Игорь_Vasinsky написал(а):
тебе winston показал как выбрать нужный кусок массива, я показал как сделать немного по другому - сразу вывод - основное что тебе нужно понять - это как получить нужный кусок массива. почитай про используемые функции в наших примерах.

Спустя 2 часа, 52 минуты, 54 секунды (6.08.2012 - 00:24) Hancock написал(а):
Игорь_Vasinsky, почитал я про эти функции, но работаю они у меня непонятно как, в итоге сделал следующим образом:
<?PHP
header('Content-Type: text/html; charset=windows-1251');
error_reporting(0);
$data = file("c:\Program Files\Icecast2 Win32\logs\playlist.log");
$n = 15;

$data2 = array_slice($data, -15, $n);
$result = array_reverse($data2);

for($i=0;$i<$n;$i++){
echo "<table align=\"center\" width=\"600\" bordercolor=\"#000\" border=\"1\" cellpadding=\"0\" rules=\"rows\">";
$mass = explode("|",$result[$i]);
$rest = substr($mass[0], -14, 8);
echo "<td width='65px'><b>$rest</b></td>";
echo "<td>$mass[3]</td>";
echo "<tr>";
echo "</table>";
}
?>


array_slice методом тыка настроил, по-другому просто не выводит нужное колличество элементов, хоть реверс правильно прикрутился и то радует.
Быстрый ответ:

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