Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Структуры данных, И способы работы с ними на php 
V
    Опции темы
WolfON
Дата 24.4.2007, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 604
Регистрация: 19.7.2004

Репутация: 6
Всего: 8



Какие средства есть для работы со структурами данных на php?  smile 

Чтобы лучше было понятно, что надо - приведу пример:
Есть клиент-серверное приложение, с которым php должен общаться по сокетам, в нем используется следующая структура запросов:
Код

u_long type;
u_long request;
u_long size;
u_char message[size];

Т.е. требуется принимать и отправлять информацию в 16-ричном формате и потом ее распарсивать на переменные.
Например я могу отослать что-то вида: 0xAFAFAFAFBDBDBDBD00000001AADD, те type=0xAFAFAFAF, request=0xBDBDBDBD, size=0x00000001, message[1]=0xAADD

UPD: чьорт, случайно не в ту ветку кинул (

Это сообщение отредактировал(а) WolfON - 24.4.2007, 18:08
PM MAIL ICQ   Вверх
Glip
Дата 24.4.2007, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 473
Регистрация: 30.12.2006

Репутация: 7
Всего: 18



я ничего похожего на копирование куска памяти в структуру как С не нашел.
т.к. у меня объект поднимает себя из базы через ассоциативный массив, и надо было еще то же объект поднимать из строки с полями фиксированой длины то сделал следущее:
Код

        private $fieldSizes = array(
            'message_code' => 3,
            'sequence_number' => 4,
            'call_date' => 7,
            'end_time' => 5,
            'callers_number' => 5,
            'call_duration' => 6,
            'meter_pulses' => 5,
            'dialled_access_number' => 5,
            'dialled_number' => 25,
            'information_status_ii' => 2,
            'account_code' => 16,
            'authorisation_code' => 5,
            'queue_time_answer' => 5,
            'information_state_i' => 2,
            'costs' => 12,
            'cost_state' => 2,
            'trunk_number' => 5,
            'sent_access_number' => 5,
            'sent_number' => 25,
            'a_number' => null
        );
        
        public function importString($string)
        {
            $result = array();
            
            $start = 0;
            foreach ($fieldSizes as $field => $len) {
                $result[$field] = substr($string, $start, $len);
                $start += $len;
            }
            
            return    $this->makeObject(array_map("trim", $result));
        }

не откажусь от лучших вариантов smile


--------------------
user posted image
PM MAIL   Вверх
Vaulter
Дата 24.4.2007, 21:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1724
Регистрация: 30.12.2002
Где: бункер

Репутация: 6
Всего: 22



serialize
unserialize


--------------------
PM MAIL WWW ICQ   Вверх
WolfON
Дата 24.4.2007, 21:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 604
Регистрация: 19.7.2004

Репутация: 6
Всего: 8



формат отправки данных уже определен, а в результате сериализации я получу что-то вида:
Код

O:7:"myclass":3:{s:14:"myclasspriv1";s:4:"val1";s:21:"myclassmyclasspriv2";s:4:"val2";s:3:"pub";s:4:"val3";}

Совсем не то, что нужно

или предлагаете их перегружать?
PM MAIL ICQ   Вверх
Vaulter
Дата 25.4.2007, 00:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1724
Регистрация: 30.12.2002
Где: бункер

Репутация: 6
Всего: 22



Уважаемый, если Вы закрепили формат данных, что Вы требуете от PHP?
они то по своему закрепили smile
в любом случае успехов.



--------------------
PM MAIL WWW ICQ   Вверх
WolfON
Дата 25.4.2007, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 604
Регистрация: 19.7.2004

Репутация: 6
Всего: 8



Я настойчиво интересуюсь про средства для работы с произвольным форматом данных )
Что-то вроде type..record в паскале
PM MAIL ICQ   Вверх
WolfON
Дата 4.5.2007, 18:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 604
Регистрация: 19.7.2004

Репутация: 6
Всего: 8



Решил путем использования pack() и unpack()
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1833 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.