X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость ( Вход | Регистрация )

Открыть тему
Тема закрыта
> Помогите с массивами Php.
Nunkomm
Nunkomm
Topic Starter сообщение 19.4.2010, 23:43; Ответить: Nunkomm
Сообщение #1


Мизантропичный доктор
******

Группа: Active User
Сообщений: 1911
Регистрация: 11.4.2009
Из: Обратной стороны монитора
Поблагодарили: 993 раза
Репутация:   113  


Здравствуйте.
Есть файл, который берёт массив в обратном порядке и нумерует страницы в обратном порядке
Нужно, чтобы брал массив в прямом порядке и нумеровал страницы в прямом порядке:
<?php

class MyUpload extends Upload
{
var $page;

function __construct()
{
if(!($this->page = unserialize(trim(file_get_contents("state")))))
{
$this->page = 0;
}
}

function submit_book($objTxtParser)
{
$objTxtParser->parse_book();
$t = $objTxtParser->pages;

for($i=0;$i<count($t);$i++)
{
$pages[$i]["text"] = $t[$i];
$pages[$i]["num"] = $i;
}

$pages = array_reverse($pages);

for($j=$this->page;$j<count($pages);$j++)

{
$tmp = $this->title;
$num = $pages[$j]["num"]+1;
$this->title .= " - стр. {$num}.";
$this->body = "<p align='justify'>".$pages[$j]["text"]."</p>";
parent::submit();
$this->title = $tmp;
$this->page++;
file_put_contents("state",serialize($this->page));
}
}
}

Помогите исправить. С меня "+" и спасибо.

Сообщение отредактировал Nunkomm - 19.4.2010, 23:51


--------------------
Версия 2.0.101. Ещё злее, ещё мизантропичнее.
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
rjksdfhe
rjksdfhe
сообщение 20.4.2010, 0:15; Ответить: rjksdfhe
Сообщение #2


Straight arms
*******

Группа: Active User
Сообщений: 2760
Регистрация: 21.4.2009
Из: Мытищи, МО, РФ
Поблагодарили: 1111 раз
Репутация:   163  


Здесь только $pages = array_reverse($pages); переворачивает исходный порядок массива, можно эту строку закомментировать и посмотреть что олучится.

Если не поможет, для решения проблемы необходим развёрнутый пример исходников и данных.


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Nunkomm
Nunkomm
Topic Starter сообщение 20.4.2010, 0:24; Ответить: Nunkomm
Сообщение #3


Мизантропичный доктор
******

Группа: Active User
Сообщений: 1911
Регистрация: 11.4.2009
Из: Обратной стороны монитора
Поблагодарили: 993 раза
Репутация:   113  


(rjksdfhe @ 19.4.2010, 23:15) *
Здесь только $pages = array_reverse($pages); переворачивает исходный порядок массива, можно эту строку закомментировать и посмотреть что олучится.

Если не поможет, для решения проблемы необходим развёрнутый пример исходников и данных.



Закомментировать пытался. Выдаёт ошибку парсинья. Исходники отправил в ЛС.


--------------------
Версия 2.0.101. Ещё злее, ещё мизантропичнее.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
freesoccer
freesoccer
сообщение 20.4.2010, 0:26; Ответить: freesoccer
Сообщение #4


Участник
***

Группа: User
Сообщений: 114
Регистрация: 23.8.2009
Из: Минск
Поблагодарили: 41 раз
Репутация:   8  


А что Вам мешает считывать массив с конца???
Короче смысл такой: объявляем $j = count ($array) и выводим страницы в обратном порядке от максимальной к нулю. Индекс в каждой итерации цикла уменьшаем на 1. Как только индекс = 0 - массив считан.
Имхо, использовать класс для этого я бы не стал. На обработку массива в цикле уходит 3-4 строки кода.

Сообщение отредактировал freesoccer - 20.4.2010, 0:26


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
fedek
fedek
сообщение 20.4.2010, 0:34; Ответить: fedek
Сообщение #5


Завсегдатай
*****

Группа: Active User
Сообщений: 572
Регистрация: 28.2.2010
Из: Богородск
Поблагодарили: 83 раза
Репутация:   16  


С меня "+" и спасибо.

На Форуме запрещено Платить Плюсами и спасибо. Их дают в благодарность. Просьба модераторов объяснить ТСу что правила для всех...


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Nunkomm
Nunkomm
Topic Starter сообщение 20.4.2010, 0:36; Ответить: Nunkomm
Сообщение #6


Мизантропичный доктор
******

Группа: Active User
Сообщений: 1911
Регистрация: 11.4.2009
Из: Обратной стороны монитора
Поблагодарили: 993 раза
Репутация:   113  


(freesoccer @ 19.4.2010, 23:26) *
А что Вам мешает считывать массив с конца???
Короче смысл такой: объявляем $j = count ($array) и выводим страницы в обратном порядке от максимальной к нулю. Индекс в каждой итерации цикла уменьшаем на 1. Как только индекс = 0 - массив считан.
Имхо, использовать класс для этого я бы не стал. На обработку массива в цикле уходит 3-4 строки кода.


Поподробнее можно, если не сложно...

(fedek @ 19.4.2010, 23:34) *
С меня "+" и спасибо.

На Форуме запрещено Платить Плюсами и спасибо. Их дают в благодарность. Просьба модераторов объяснить ТСу что правила для всех...



Вы считаете, что я буде НЕ благодарен тому, кто мне поможет? cool.gif


--------------------
Версия 2.0.101. Ещё злее, ещё мизантропичнее.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
fedek
fedek
сообщение 20.4.2010, 12:03; Ответить: fedek
Сообщение #7


Завсегдатай
*****

Группа: Active User
Сообщений: 572
Регистрация: 28.2.2010
Из: Богородск
Поблагодарили: 83 раза
Репутация:   16  


Вы считаете, что я буде НЕ благодарен тому, кто мне поможет?

Я думаю вы будете благодарны=) Просто я уже получил замечание по этому поводу)) Вот хотел и вам его датьwink.gif


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
freesoccer
freesoccer
сообщение 20.4.2010, 16:19; Ответить: freesoccer
Сообщение #8


Участник
***

Группа: User
Сообщений: 114
Регистрация: 23.8.2009
Из: Минск
Поблагодарили: 41 раз
Репутация:   8  


Почитал описание array_reverse() - по идее именно она переворачивает массив. Попробуйте закомментировать либо строку
$pages = array_reverse($pages);
прописать дважды.
Либо еще вариант: цикл начинать с конца, т.е. строку
for($j=$this->page;$j<count($pages);$j++)

заменить на
$j=count($pages);
for($j>0;$j=$j-1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Lame13
Lame13
сообщение 20.4.2010, 16:24; Ответить: Lame13
Сообщение #9


Частый гость
**

Группа: User
Сообщений: 98
Регистрация: 13.4.2010
Из: Thailand, Bangkok
Поблагодарили: 17 раз
Репутация:   5  


Есть классный сайтик, php.net называется :)

http://ru2.php.net/manual/en/function.array-reverse.php

Например, вот:
<?php
function arrayReverse(&$arr)
{
    $c = count($arr);
    for($i=$c-1;$i>=0;$i--)
    {
        $arr[$c+$i] = $arr[$i];
    }
    $arr = array_slice($arr,$c,$c*2);
}
?>


Только учтите, что ключи подобный метод не сохраняет.


--------------------
Здесь я беру кеи
Отличные серверы - мы вместе уже 5 лет :) //или 6? О_О ОМГ! теперь и в Европе! :)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Веб-разработка (HTML5, CSS3, JavaScript, jQuery, Ajax, PHP)
18 qpPeW 3356 Вчера, 13:32
автор: qpPeW
Открытая тема (нет новых ответов) Помогите выбрать программу
Помогите выбрать программу
11 impak 1331 11.12.2017, 13:11
автор: Mikki
Открытая тема (нет новых ответов) php скрипты любой сложности / диз+верстка (адаптивно)
любые задачи на php - автоматизация, парсинг, работа с БД
1 affrodita 492 8.12.2017, 17:40
автор: affrodita
Открытая тема (нет новых ответов) Помогите найти плагин на WP
Отзывы с профилей соц сетей
1 SEOMR 433 30.11.2017, 7:18
автор: Nell
Открытая тема (нет новых ответов) Помогите найти проблему
Долгий ответ сервера
6 maxim1249 680 29.11.2017, 17:27
автор: genjnat


 



RSS Текстовая версия Сейчас: 13.12.2017, 13:23
Дизайн