[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Цикл в цикле
srazil
Доброго времени суток всем, небольшая проблема с циклами.

в первом цикле я получаю все имена директорий
во втором читаю из этих директорий файлы с базами


print_r ($dirs); // Это директории
// Array ( [0] => action [1] => detskie [2] => gonki [3] => kazino [4] => logicheskie [5] => shariki-linii [6] => strategii )


$i=0;
// Получаю все директории
foreach($dirs as $category)
{
$category=trim($category);
// Получаю тектовую базу
$cat_file =file('catalog/'.$category.'/'.$category.'_base.dat');

$h = 0;
foreach($cat_file as $line)
{
$line=trim($line);
$exp=explode("|",$line);

if ($h==8) break; // Цикл достиг 8 останавливаю, но у меня цикл в цикле
//и поэтому у меня шесть раз по восемь, а как сделать только одир раз восемь?





Спустя 8 минут, 9 секунд (27.04.2011 - 10:50) linker написал(а):
$category = reset($dirs);
$category=trim($category);
$cat_file =file('catalog/'.$category.'/'.$category.'_base.dat');
$h = 0;
foreach($cat_file as $line)
{
++ $h;
$line=trim($line);
$exp=explode("|",$line);
if ($h==8) break;
}

Спустя 6 минут, 35 секунд (27.04.2011 - 10:56) Renden написал(а):
srazil
Тебе уже linker ответил, но мне непонятно зачем именно 8 раз? Тк у тя массив диреторий состоит из 7 значений. (а не 6 или 8)

Спустя 4 минуты, 53 секунды (27.04.2011 - 11:01) srazil написал(а):
$cat_file =file('catalog/'.$category.'/'.$category.'_base.dat'); // Это база а из нее мне и надо только 8 записей выводить! (в ней их к примеру 214), такой файл в каждой директории и в них разная инфа.


print_r($dirs);
//Array ( [0] => action [1] => detskie [2] => gonki [3] => kazino [4] => logicheskie [5] => shariki-linii [6] => strategii )

$category = reset($dirs);
print_r($category);
//action


А как сделать на все директории?

Недоговоренное:
Я хочу вывести 8 последних добавленных записей из всех баз

Спустя 18 минут, 49 секунд (27.04.2011 - 11:20) srazil написал(а):
Начну заново.
Мне нужно вывести последние 8 записей из текстовых баз(записи могут быть не в одной текстовой базе а в нескольких), я читаю в массив все директории где находяться текстовые базы


print_r ($dirs); // Это директории
// Array ( [0] => action [1] => detskie [2] => gonki [3] => kazino [4] => logicheskie [5] => shariki-linii [6] => strategii )


$i=0;
// Получаю все директории
foreach($dirs as $category)
{
$category=trim($category);
// Получаю тектовуе базы
$cat_file =file('catalog/'.$category.'/'.$category.'_base.dat');

$h = 0;
foreach($cat_file as $line)
{
$line=trim($line);
$exp=explode("|",$line);

if ($h==8) break; // Цикл достиг 8 останавливаю, но у меня цикл в цикле
//и поэтому у меня шесть раз по восемь, а как сделать только один раз восемь?



На выходе я получаю много дублированных записей т к у меня цикл в цикле

Спустя 21 минута, 22 секунды (27.04.2011 - 11:42) linker написал(а):
Цитата
и поэтому у меня шесть раз по восемь, а как сделать только один раз восемь?

Определись в конце концов сколько и по сколько тебе надо.

Спустя 13 минут, 9 секунд (27.04.2011 - 11:55) srazil написал(а):
нужно всего вывести 8 последних записей и все!

Спустя 19 минут, 22 секунды (27.04.2011 - 12:14) walerus написал(а):

<?php

print_r ($dirs); // Это директории
// Array ( [0] => action [1] => detskie [2] => gonki [3] => kazino [4] => logicheskie [5] => shariki-linii [6] => strategii )

// Получаю все директории

$result = array();
foreach($dirs as $category)
{
$category=trim($category);

// Получаю тектовые базы
$cat_file =file('catalog/'.$category.'/'.$category.'_base.dat');

$cat_file=array_reverse ($cat_file, TRUE);// переворачиваем массив сохраняя ключи

$count = 8;
$result[$category] = array_slice($result, 0, $count);
}

?>


В результате получится массив $result - где, "ключи" - названия директорий, а значения - выборка 8ми последних элементов(если они конечно будут)

Спустя 2 часа, 39 минут, 18 секунд (27.04.2011 - 14:53) srazil написал(а):
Цитата (walerus @ 27.04.2011 - 09:14)

<?php

print_r ($dirs); // Это директории
// Array ( [0] => action [1] => detskie [2] => gonki [3] => kazino [4] => logicheskie [5] => shariki-linii [6] => strategii )

// Получаю все директории

$result = array();
foreach($dirs as $category)
{
$category=trim($category);

// Получаю тектовые базы
$cat_file =file('catalog/'.$category.'/'.$category.'_base.dat');

$cat_file=array_reverse ($cat_file, TRUE);// переворачиваем массив сохраняя ключи

$count = 8;
$result[$category] = array_slice($result, 0, $count);
}

?>


В результате получится массив $result - где, "ключи" - названия директорий, а значения - выборка 8ми последних элементов(если они конечно будут)

Это одно и тоже

print_r ($result);
print_r ($dirs);


Нужно второй цикл остановить по достижению, пробовал еще break 2 но он тоже не помог.

Быстрый ответ:

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