За последние 24 часа нас посетили 94212 программистов и 6336 роботов. Сейчас ищут 3211 программистов ...

Разобрать массив

Тема в разделе "PHP для новичков", создана пользователем nikemat, 19 дек 2015.

  1. nikemat

    nikemat Guest

    помогите разобрать объект/массив, получив содержимое ключа body
    сам скрипт
    содержимое- ответ функции print_r($emails);
    в $emails- экземпляр класса.
    Нужно реализовать метод, который будет возвращать приватное свойство

    Код (PHP):
    1. Email_reader Object
    2. (
    3.     [conn] => Resource id #2
    4.     [inbox:Email_reader:private] => Array
    5.         (
    6.             [0] => Array
    7.                 (
    8.                     [index] => 1
    9.                     [header] => stdClass Object
    10.                         (
    11.                             [date] => Fri, 6 Nov 2015 19:01:44 +0500
    12.                             [Date] => Fri, 6 Nov 2015 19:01:44 +0500
    13.                             [subject] => =?UTF-8?B?0KXQvtC5?=
    14.                             [Subject] => =?UTF-8?B?0KXQvtC5?=
    15.                             [message_id] => <CAL0_ARzCk5vwyHA8NUqsT-iTGRGOrJ+2yh3+ees_OYfLhG3Lcg@mail.gmail.com>
    16.                             [toaddress] => info@mail@mail.ru
    17.                             [to] => Array
    18.                                 (
    19.                                     [0] => stdClass Object
    20.                                         (
    21.                                             [mailbox] => info
    22.                                             [host] => mail@mail.ru
    23.                                         )
    24.  
    25.                                 )
    26.  
    27.                             [fromaddress] => =?UTF-8?B?0JDQvdC00YDQtdC5INCa0LDQvdC00LDRg9GA0L7Qsg==?= <mail@mail.ru>
    28.                             [from] => Array
    29.                                 (
    30.                                     [0] => stdClass Object
    31.                                         (
    32.                                             [personal] => =?UTF-8?B?0JDQvdC00YDQtdC5INCa0LDQvdC00LDRg9GA0L7Qsg==?=
    33.                                             [mailbox] => andrey
    34.                                             [host] => nikecrm.ru
    35.                                         )
    36.  
    37.                                 )
    38.  
    39.                             [reply_toaddress] => =?UTF-8?B?0JDQvdC00YDQtdC5INCa0LDQvdC00LDRg9GA0L7Qsg==?= <mail@mail.ru>
    40.                             [reply_to] => Array
    41.                                 (
    42.                                     [0] => stdClass Object
    43.                                         (
    44.                                             [personal] => =?UTF-8?B?0JDQvdC00YDQtdC5INCa0LDQvdC00LDRg9GA0L7Qsg==?=
    45.                                             [mailbox] => andrey
    46.                                             [host] => nikecrm.ru
    47.                                         )
    48.  
    49.                                 )
    50.  
    51.                             [senderaddress] => =?UTF-8?B?0JDQvdC00YDQtdC5INCa0LDQvdC00LDRg9GA0L7Qsg==?= <mail@mail.ru>
    52.                             [sender] => Array
    53.                                 (
    54.                                     [0] => stdClass Object
    55.                                         (
    56.                                             [personal] => =?UTF-8?B?0JDQvdC00YDQtdC5INCa0LDQvdC00LDRg9GA0L7Qsg==?=
    57.                                             [mailbox] => andrey
    58.                                             [host] => nikecrm.ru
    59.                                         )
    60.  
    61.                                 )
    62.  
    63.                             [Recent] =>  
    64.                             [Unseen] =>  
    65.                             [Flagged] =>  
    66.                             [Answered] => A
    67.                             [Deleted] =>  
    68.                             [Draft] =>  
    69.                             [Msgno] =>    1
    70.                             [MailDate] =>  6-Nov-2015 14:01:48 +0000
    71.                             [Size] => 2980
    72.                             [udate] => 1446818508
    73.                         )
    74.  
    75.                     [body] => 0J3QuCDRhdCw0LkNCg==
    76.  
    77.                     [structure] => stdClass Object
    78.                         (
    79.                             [type] => 0
    80.                             [encoding] => 3
    81.                             [ifsubtype] => 1
    82.                             [subtype] => PLAIN
    83.                             [ifdescription] => 0
    84.                             [ifid] => 0
    85.                             [lines] => 1
    86.                             [bytes] => 22
    87.                             [ifdisposition] => 0
    88.                             [ifdparameters] => 0
    89.                             [ifparameters] => 1
    90.                             [parameters] => Array
    91.                                 (
    92.                                     [0] => stdClass Object
    93.                                         (
    94.                                             [attribute] => charset
    95.                                             [value] => UTF-8
    96.                                         )
    97.  
    98.                                 )
    99.  
    100.                         )
    101.  
    102.                 )
    103.  
    104.         )
    105.  
    106. ) 
    PHP, JavaScript, SQL и другой код пишите внутри тегов
    Код ( (Unknown Language)):
    1. [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
     
  2. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
  3. nikemat

    nikemat Guest

    там заголовки только, а body- это же сам текст) он-то и нужен в первую очередь)
    мне вообще понять, как работать с объектом) как выводить из него нужные данные
     
  4. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Ты доки читаешь? o_O
    https://secure.php.net/manual/en/function.imap-body.php
     
  5. nikemat

    nikemat Guest

    это же всё есть в классе (см. ссылки). imap_body, наряду с другими функциями, кидается в объект. мне из него нужно получить данные.
     
  6. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Мож чет не вижу а про какой объект идет речь?
    Вызываешь inbox который сохранит детали писем в $this->inbox. Потом get получаешь нужное письмо. Детали хранятся в массиве
    Код (PHP):
    1.             $in[] = array(
    2.                 'index'     => $i,
    3.                 'header'    => imap_headerinfo($this->conn, $i),
    4.                 'body'      => imap_body($this->conn, $i),
    5.                 'structure' => imap_fetchstructure($this->conn, $i)
    6.             ); 
    Разве не так? o_O
     
  7. nikemat

    nikemat Guest

    а как вне класса обработать данные?
    вот, я вызываю его:
    $emails = New Email_reader();
    $emails->inbox();

    получаю такой объект с массивом (см. первый пост)
     
  8. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Дык, ты код читаешь? o_O
    Метод inbox записывает письма в приватную переменную класса $this->inbox который так же еще называют свойством объекта.
    Где ты в коде получаешь детали письма? o_O

    З.Ы.
    Интересно что за херотень ты написал в своей cms =D
     
  9. nikemat

    nikemat Guest

    вот я и спрашиваю, как получить детали письма из полученного объекта.
    $emails->inbox()-> body ничего не выводит.
    я уже отчаялся перебором извлечь эти данные, буду парсить как строку, если никто ответить мне не может.

    по поводу зы: я не делаю cms. написал так как умею. какая разница, что я там написал, главное- у заказчиков работает.
    я 10 лет прогаю на php, но в ООП слаб, прогаю продедурами, ибо учился на php4.
    не нужно переходить на личности. на всех форумах, где пытаются меня критиковать и тд, это плохо заканчивается.
    требуется ответ ввиде кода. не знаете или не можете- пройдите мимо.
     
  10. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Товарищ nikemat я вам ответил уже давно но вы отказываетесь воспринимать информацию:(
    По поводу З.Ы.
    10 лет опыта это не мало. Ты должен быть уже тыжпрограммистом, у тебя должен быть тыжпрограммистский костюм и ты должен уже взглядом открывать банку пива.

    [​IMG]

    Раз ты пишешь на php 4 могу поспорить что используешь не безопасные функции и т.д. по сему могу только посочувствовать твоим клиентам:(
    Просто написал... не что бы обидеть а что бы смотивировать...
     
  11. nikemat

    nikemat Guest

    ладно, кажется я сделал. назначил глобальную переменную массиву in, теперь можно работать как с массивом) мог бы и сам додуматься, тем более уже делал так)
    Код (PHP):
    1. <?php
    2. include_once("function.php");
    3. class Email_reader {
    4.  
    5.     // imap server connection
    6.     public $conn;
    7.  
    8.     // inbox storage and inbox message count
    9.     private $inbox;
    10.     private $msg_cnt;
    11.  
    12.     // email login credentials
    13.     private $server = imap;
    14.     private $user   = elogin;
    15.     private $pass   = epass;
    16.     private $port   = port; // adjust according to server settings
    17.  
    18.     // connect to the server and get the inbox emails
    19.     function __construct() {
    20.         $this->connect();
    21.         $this->inbox();
    22.     }
    23.  
    24.     // close the server connection
    25.     function close() {
    26.         $this->inbox = array();
    27.         $this->msg_cnt = 0;
    28.  
    29.         imap_close($this->conn);
    30.     }
    31.  
    32.     // open the server connection
    33.     // the imap_open function parameters will need to be changed for the particular server
    34.     // these are laid out to connect to a Dreamhost IMAP server
    35.     function connect() {
    36.         $this->conn = imap_open('{'.$this->server.'}', $this->user, $this->pass);
    37.     }
    38.  
    39.     // move the message to a new folder
    40.     function move($msg_index, $folder='INBOX') {
    41.         // move on server
    42.         imap_mail_move($this->conn, $msg_index, $folder);
    43.         imap_expunge($this->conn);
    44.  
    45.         // re-read the inbox
    46.         $this->inbox();
    47.     }
    48.  
    49.     // get a specific message (1 = first email, 2 = second email, etc.)
    50.     function get($msg_index=NULL) {
    51.         if (count($this->inbox) <= 0) {
    52.             return array();
    53.         }
    54.         elseif ( ! is_null($msg_index) && isset($this->inbox[$msg_index])) {
    55.             return $this->inbox[$msg_index];
    56.         }
    57.  
    58.         return $this->inbox[0];
    59.     }
    60.  
    61.     // read the inbox
    62.     function inbox() {
    63.         $this->msg_cnt = imap_num_msg($this->conn);
    64. global $in;
    65.         $in = array();
    66.         for($i = 1; $i <= $this->msg_cnt; $i++) {
    67.             $in[] = array(
    68.                 'index'     => $i,
    69.                 'header'    => imap_headerinfo($this->conn, $i),
    70.                 'body'      => imap_body($this->conn, $i),
    71.                 'structure' => imap_fetchstructure($this->conn, $i)
    72.             );
    73.         
    74.         }
    75.         $this->inbox = $in;
    76.     }
    77. }
    78.  
    79. $emails = New Email_reader();
    80. $emails->inbox();
    81. print_r($emails);
    82. ?>
    я не пишу на php4, я пишу на php 5.6. используя новые функции и тенденции. просто не ООП, а процедурами, функциями)
    с безопасностью в моих проектах все нормально.
    программистский костюм мне не нужен, я почти не выхожу из квартиры, ни с кем не общаюсь и пиво не пью.

    PHP, JavaScript, SQL и другой код пишите внутри тегов
    Код ( (Unknown Language)):
    1. [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]