Массив через foreach в обратном порядке

12
goodier
На сайте с 10.03.2009
Offline
36
9579

Здравствуйте!

Речь пойдет о Webmoney интерфейсе X3 (WMXI) - Получение истории операций по кошельку.

Как получить историю в обратном порядке, то есть новые операции в кошельке должны быть вверху.

Ниже PHP-код выводит историю операций с даты по дату, но последняя транзакция внизу, что очень не удобно.

<?php

$wmid = "My_wmid";
$date_a = $_POST['date_a'];
$date_b = $_POST['date_b'];
$koshelek = $_POST['koshelek'];
define('DATE_A', $date_a.' 00:00:00');
define('DATE_B', $date_b.' 00:00:00');
if(!isset($class)){ $class = 'WMXI';}
require_once("$class.php");
$wmxi = new $class(realpath('WMXI.crt'),'UTF-8');
define('PASS', 'My_KWM_Passw');
define('KWMFILE', 'keys/'.$wmid.'.kwm');
if(defined('EKEY') && defined('NKEY')){ $wmkey = array('ekey' => EKEY, 'nkey' => NKEY);}
elseif (defined('KWMDATA')){ $wmkey = array('pass' => PASS, 'data' => KWMDATA);}
elseif (defined('KWMFILE')){ $wmkey = array('pass' => PASS, 'file' => KWMFILE);}
if(isset($wmkey)){ $wmxi->Classic($wmid,$wmkey);}
$res = $wmxi->X3($koshelek,0,0,0,0,DATE_A,DATE_B);
$data = $res->toObject();
$payhistory = $data->operations->operation;
//$payhistory = arsort($payhistory);
foreach($payhistory as $k => $v){
$comment = strval($v->desc);
$koshel_in = strval($v->pursesrc);
$koshel_out = strval($v->pursedest);
$orderid = strval($v->orderid);
$comiss = strval($v->comiss);
$ostatok = strval($v->rest);
$summa = strval($v->amount);
}
?>
siv1987
На сайте с 02.04.2009
Offline
427
#1
DiAksID
На сайте с 02.08.2008
Offline
236
#2

arsort — Отсортировать массив в обратном порядке, сохраняя ключи

show must go on !!!...
LEOnidUKG
На сайте с 25.11.2006
Offline
1774
#3

Ну или:

$payhistory = array_reverse($data->operations->operation);

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
goodier
На сайте с 10.03.2009
Offline
36
#4

и

DiAksID:
arsort — Отсортировать массив в обратном порядке, сохраняя ключи

Обратите внимание в моем коде на закомментированную arsort() - она не помогла.

LEOnidUKG:
Ну или: $payhistory = array_reverse($data->operations->operation);

пробовал array_reverse($data->operations->operation); и array_reverse($data->operations->operation, true);

Так же как и arsort не выводит результат.

перепробовал все сортировки с этой страницы http://www.php.ru/manual/ref.array.html

siv1987
На сайте с 02.04.2009
Offline
427
#5
goodier:
пробовал array_reverse($data->operations->operation); и array_reverse($data->operations->operation, true);
Так же как и arsort не выводит результат.
goodier:
//$payhistory = arsort($payhistory);

ТС, а вы уверены что правильно пользовались функциями?

goodier
На сайте с 10.03.2009
Offline
36
#6

Читал внимательно и пробовал, ну не сортируется он в обратном порядке.

Помогите, кто догадался в чем может быть дело...

B
На сайте с 23.10.2006
Offline
170
#7

без куска данных сложно подсказать почему сортировка не сработала.

Так-что кусок данных в студию!

goodier
На сайте с 10.03.2009
Offline
36
#8

$payhistory = $data->operations->operation; Возвращает ответы типа:

SimpleXMLElement Object ( [@attributes] => Array ( [id] => 675453354 [ts] => 675453354 ) [pursesrc] => кошелек [pursedest] => кошелек [amount] => 650.00 [comiss] => 0.00 [opertype] => 0 [wminvid] => 278701451 [orderid] => 41214 [tranid] => 0 [period] => 0 [desc] => примечание к платежу [datecrt] => 20120322 00:18:28 [dateupd] => 20120322 00:18:28 [corrwm] => вмид [rest] => остаток на кошельке )

B
На сайте с 23.10.2006
Offline
170
#9

ну и как тут пытаться применить сортировку на 1м значение?)

UPD

аа понятно

у вас дата - то в виде

20120322 00:18:28

переведите в секунды и сортируйте

siv1987
На сайте с 02.04.2009
Offline
427
#10

из документации


print_r($res->Sort());
# print_r($res->Sort(false));
# print_r($res->toArray());
# print_r($res->toObject());
# print_r($res->toString());

http://talk.dkameleon.net/showthread.php?t=9#post13

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий