Страница 1 из 3 123 ПоследняяПоследняя
Показано с 1 по 10 из 23

Тема: Обработка результатов

  1. #1

    Обработка результатов

    Смотрю, часто возникают проблемы по вытягиванию нужных полей из ответа сервера.
    Но так как все частные случаи рассмотреть не реально, то попробую рассмотреть общие случаи.

  2. #2
    Будем рассматривать интерфейс X11 - он содержит все необходимые структуры данных.

    Выведем весь ответ и изучим его:
    PHP код:
    <?php

        
    include('_header.php');

        
    # http://wiki.webmoney.ru/wiki/show/Interfeys_X11
        
    $res $wmxi->X11(
            
    ANOTHER_WMID,  # WM-идентификатор аттестата
            
    0,             # отображение “опорного словаря”
            
    0,             # отображение персональных данных(паспортные данные+контактная информация) владельца аттестата
            
    0              # проверка принадлежности WM-идентификатора, подписавшего запрос, списку доверенных идентификаторов для проверяемого аттестата
        
    );

        
    $data $res->toObject();
        
    print_r($data);

    ?>
    Код:
    SimpleXMLElement Object
    (
        [@attributes] => Array
            (
                [retval] => 0
            )
    
        [fullaccess] => 0
        [certinfo] => SimpleXMLElement Object
            (
                [@attributes] => Array
                    (
    Дерево, в котором два типа элементов:

    • SimpleXMLElement Object
    • Array

    К первым элементам досткпаются так, как к методам объекта:
    PHP код:
        print_r($data->certinfo->wmids); 
    Ко вторым - как к массиву, соотвественно:
    PHP код:
        print_r($data->certinfo['wmid']); 
    Есть ещё третий вариант - список объектов. Там необходимо указывать порядковый номер объекта в списке:
    PHP код:
        print_r($data->certinfo->wmids->row[0]['wmid']); 
    В третьем примере элементов <row /> может быть несколько - по количеству присоединенных ВМИДов, следовательно, правильно их итерировать.
    Если элемент один, то можно указывать и так:
    PHP код:
        print_r($data->certinfo->wmids->row['wmid']); 
    Несколько элементов можно перебрать стандартными средствами PHP:
    PHP код:
        foreach($data->certinfo->wmids->row as $row) {
            
    print_r($row);
        } 
    Не забывайте, что нужные значения, которые вы извлекли таким образом, все равно SimpleXMLElement Object, поэтому их необходимо преобразовать к нужному типу, чаще всего к строке:
    PHP код:
        print_r(strval($data->certinfo->wmids->row['wmid'])); 

  3. #3

    Зачёт!

    Огромное спасибо.
    Теперь всё приобретает понятный вид.
    WMXI - нужнейшая штука.

  4. #4
    Всё понял, кроме одного: ... а как таким образом [retval] выдернуть?
    с уважением,
    capt. Yossarian

  5. #5
    Цитата Сообщение от yossarian Посмотреть сообщение
    Всё понял, кроме одного: ... а как таким образом [retval] выдернуть?
    попробуйте:

    PHP код:
    echo $res->ErrorCode(); 

  6. #6
    х3 интерфейс как получить историю платежей нечего не пойму как разобрать ответ помогите!!!!

  7. #7
    Что именно вы не понимаете?
    Вы же получаете на выходе отсортированый массив с результатами.

  8. #8
    пример получаю это SimpleXMLElement Object ( [reqn] => [retval] => 0 [retdesc] => SimpleXMLElement Object ( ) )

    как перебрать это и вывести в отдельные значения по каждому платежу, или как найти платёж по описанию или по wmid отправителя, хоть что нибудь примерчик чтоб понять как это делается
    Последний раз редактировалось serega393; 15.08.2010 в 19:00.

  9. #9
    Цитата Сообщение от serega393 Посмотреть сообщение

    как перебрать это и вывести в отдельные значения по каждому платежу, или как найти платёж по описанию или по wmid отправителя, хоть что нибудь примерчик чтоб понять как это делается

    Меня удивляет, почему вы не хотите поднять глаза на то, что я написал выше и подумать?
    PHP код:
        $data $res->toObject();
        foreach (
    $data->operations->operation as $k => $v) {
            
    print_r($v);
        } 
    Вы массивы в ПХП уже выучили?

  10. #10
    Вы массивы в ПХП уже выучили?
    нет ещё

    Спасибо!

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

    PHP код:
    $data $res->toObject();
    foreach (
    $data->operations->operation as $k => $v)  // перебор всех платежей
    {
        
    //вывод значений
        
    $wmid strval($v->corrwm);  //wmid
        
    $amount strval($v->amount);  //сумма
        //и т.д.


    Последний раз редактировалось serega393; 15.08.2010 в 19:07.

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •