Массивы внутри массива для хранения имен файлов

0

Это для первой страницы веб-сайта, на котором должно отображаться новейшее/последнее сообщение на самом верху, когда вы прокручиваете вниз и переходите к следующим страницам, сообщения становятся старше.

Существует папка, содержащая множество файлов ini с номерами в именах. То, что я пытаюсь сделать, это загрузить все имена сообщений (и только имена, а не их содержимое) в массив, а затем сортировать их по другим массивам. Я думал, возможно, использование многомерного массива было бы хорошей идеей. Например (если я понимаю это право), $usePage[1][2] будет иметь номер второго сообщения на первой странице. Даже лучший способ сделать это?

Вот соответствующий бит кода:

$ppp = 4;
$totalposts = 0;
$posts = array();
foreach (scandir($postsLoc) as $file) {
        if (is_file($postsLoc . "/" . $file)) {
        $totalposts++;
        array_push($posts, $file);
    }
}
natsort($posts);
array_values($posts);
$posts = array_reverse($posts);
print_r($posts);
$currPage = -;
$usePage = array(array());
$done = 0;
for ($i = $totalposts; $i != 0; $i--){
    if ($done >= $ppp){
        //Next page
        $currPage++;
        $done = 0;
        $usePage[$currPage] = array();
    }
    $done++;
    array_push($usePage[$currPage][$done], $i);
}
print_r($usePage);

До сих пор мне удалось запутать себя.

Спасибо за любую помощь заранее!

  • 0
    Sidenote: почему вы не используете базу данных для хранения своих сообщений? Файлы медленны, менее просты в обслуживании и т. Д.
Теги:
arrays

1 ответ

1
Лучший ответ

приведенный ниже код приводит к мультиразмерному массиву $ postsInPage, первым измерением которого является ссылка на страницу, вторая - сообщения для этой страницы. Затем вы должны будете использовать этот массив, чтобы вытащить соответствующие должности, зависящие от вашего pageId:

Array
(
    [1] => Array
        (
            [0] => .
            [1] => ..
            [2] => email_20131212_2c7a6.html
            [3] => email_20131212_98831.html
        )

    [2] => Array
        (
            [0] => errFile_20140110_940ad.txt
            [1] => errFile_20140110_2021a.txt
            [2] => errFile_20140110_2591c.txt
            [3] => errFile_20140110_43280.txt

etc и т.д. Код (не включал проверку is_file)

// load all the posts into an array:
$allPosts = array();
foreach (scandir("temp") as $file) {
        $allPosts[] = $file;
}

//sort the array (am making an assumption that $file structure will natsort sensibly
natsort($allPosts);
$allPosts = array_values($allPosts);

//split into posts per page.
$ppp = 4;
$pageId = 1;
$totalposts = 1;
$postsInPage = array();
foreach ($allPosts as $post) {
    $postsInPage[$pageId][] = $post;
    if (($totalposts % $ppp) == 0) { //i.e. 4 per page
        $pageId++;
    }
    $totalposts++;
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню