Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
xTr1m
29 / 29 / 16
Регистрация: 06.03.2013
Сообщений: 159
1

Вытащить значение из массива

04.04.2018, 16:26. Просмотров 842. Ответов 6
Метки нет (Все метки)

День добрый, есть у меня переменная $arResult. и если ее вывести через print_r, то в ней будет вот такая штука. У меня никак не получается достать цену. запись типа $arResult["SUM"] или $arResult["PRICE"] не выходит. Буду благодарен за любую помощь

Array ( [0] => Array ( ) [1] => Array ( [ID] => 1 [PAY_SYSTEM_ID] => 1 [PERSON_TYPE_ID] => 1 [NAME] => Оплата наличными или картой при получении [PSA_NAME] => Оплата наличными или картой при получении [CODE] => [SORT] => 80 [ACTION_FILE] => /bitrix/modules/sale/payment/cash [RESULT_FILE] => [DESCRIPTION] => Оплата наличными при получении заказа курьеру. [NEW_WINDOW] => N [PARAMS] => [TARIF] => [PS_MODE] => [HAVE_PAYMENT] => Y [HAVE_ACTION] => N [HAVE_RESULT] => N [HAVE_PREPAY] => N [HAVE_PRICE] => N [HAVE_RESULT_RECEIVE] => N [ENCODING] => [LOGOTIP] => Array ( [ID] => 626 [TIMESTAMP_X] => 31.01.2017 22:46:37 [MODULE_ID] => sale [HEIGHT] => 48 [WIDTH] => 48 [FILE_SIZE] => 17829 [CONTENT_TYPE] => image/png [SUBDIR] => sale/paysystem/logotip/05a [FILE_NAME] => 05a74e85b6e59698705f5b2f72f43eae.png [ORIGINAL_NAME] => cash.png [DESCRIPTION] => [HANDLER_ID] => [EXTERNAL_ID] => 0931ab4535b6be4f8e70acb97f95f50c [~src] => [SRC] => /upload/sale/paysystem/logotip/05a/05a74e85b6e59698705f5b2f72f43eae.png ) [ACTIVE] => Y [ALLOW_EDIT_PAYMENT] => Y [IS_CASH] => N [AUTO_CHANGE_1C] => N [CAN_PRINT_CHECK] => N [BUFFERED_OUTPUT] => [IS_AFFORD_PDF] => [PATH_TO_ACTION] => /home/m/mboot/bitrix_4/public_html/bitrix/modules/sale/payment/cash/payment.php ) [2] => Array ( ) [3] => Array ( ) [4] => Array ( ) [5] => Array ( ) [6] => Array ( ) [7] => Array ( ) [8] => Array ( ) [9] => [10] => 0 [11] => 0 [12] => 0 [13] => 0 [14] => [15] => Array ( ) [16] => RUB [17] => кг [18] => 1000 [19] => Array ( ) [20] => 0 [21] => 0 [22] => 0 [23] => 0 [24] => [25] => [26] => [27] => [28] => [29] => [30] => [31] => [32] => [33] => [34] => [35] => Array ( ) [36] => Array ( [new_user_registration_email_confirmation] => N [new_user_registration] => Y [new_user_email_required] => N ) [37] => [38] => Array ( ) [39] => [40] => Array ( ) [41] => Array ( [DEFAULT_COLUMNS] => ) [42] => Array ( [CONFIRM_ORDER] => Y ) [43] => 736 [44] => 736 [45] => Array ( [736] => Array ( [ID] => 736 [ORDER_ID] => 736 [ACCOUNT_NUMBER] => 736/1 [PAID] => N [DATE_PAID] => [EMP_PAID_ID] => [PAY_SYSTEM_ID] => 1 [PS_STATUS] => [PS_STATUS_CODE] => [PS_INVOICE_ID] => [PS_STATUS_DESCRIPTION] => [PS_STATUS_MESSAGE] => [PS_SUM] => [PS_CURRENCY] => [PS_RESPONSE_DATE] => [PAY_VOUCHER_NUM] => [PAY_VOUCHER_DATE] => [DATE_PAY_BEFORE] => [DATE_BILL] => Bitrix\Main\Type\DateTime Object ( [valuerotected] => DateTime Object ( [date] => 2018-04-04 16:23:12.000000 [timezone_type] => 3 [timezone] => Europe/Moscow ) ) [XML_ID] => [SUM] => 5900.0000 [PRICE_COD] => 0.0000 [CURRENCY] => RUB [PAY_SYSTEM_NAME] => Оплата наличными или картой при получении [RESPONSIBLE_ID] => [EMP_RESPONSIBLE_ID] => [DATE_RESPONSIBLE_ID] => [COMMENTS] => [COMPANY_ID] => 0 [PAY_RETURN_NUM] => [PAY_RETURN_DATE] => [EMP_RETURN_ID] => [PAY_RETURN_COMMENT] => [IS_RETURN] => N [MARKED] => N [DATE_MARKED] => [EMP_MARKED_ID] => [REASON_MARKED] => [UPDATED_1C] => N [ID_1C] => [VERSION_1C] => [EXTERNAL_PAYMENT] => N ) ) [46] => Array ( [1] => Array ( [ID] => 1 [PAY_SYSTEM_ID] => 1 [PERSON_TYPE_ID] => 1 [NAME] => Оплата наличными или картой при получении [PSA_NAME] => Оплата наличными или картой при получении [CODE] => [SORT] => 80 [ACTION_FILE] => /bitrix/modules/sale/payment/cash [RESULT_FILE] => [DESCRIPTION] => Оплата наличными при получении заказа курьеру. [NEW_WINDOW] => N [PARAMS] => [TARIF] => [PS_MODE] => [HAVE_PAYMENT] => Y [HAVE_ACTION] => N [HAVE_RESULT] => N [HAVE_PREPAY] => N [HAVE_PRICE] => N [HAVE_RESULT_RECEIVE] => N [ENCODING] => [LOGOTIP] => Array ( [ID] => 626 [TIMESTAMP_X] => 31.01.2017 22:46:37 [MODULE_ID] => sale [HEIGHT] => 48 [WIDTH] => 48 [FILE_SIZE] => 17829 [CONTENT_TYPE] => image/png [SUBDIR] => sale/paysystem/logotip/05a [FILE_NAME] => 05a74e85b6e59698705f5b2f72f43eae.png [ORIGINAL_NAME] => cash.png [DESCRIPTION] => [HANDLER_ID] => [EXTERNAL_ID] => 0931ab4535b6be4f8e70acb97f95f50c [~src] => [SRC] => /upload/sale/paysystem/logotip/05a/05a74e85b6e59698705f5b2f72f43eae.png ) [ACTIVE] => Y [ALLOW_EDIT_PAYMENT] => Y [IS_CASH] => N [AUTO_CHANGE_1C] => N [CAN_PRINT_CHECK] => N [BUFFERED_OUTPUT] => [IS_AFFORD_PDF] => [PATH_TO_ACTION] => /home/m/mboot/bitrix_4/public_html/bitrix/modules/sale/payment/cash/payment.php ) ) [47] => Array ( [ID] => 736 [LID] => s1 [ACCOUNT_NUMBER] => 736 [TRACKING_NUMBER] => [PAY_SYSTEM_ID] => 1 [DELIVERY_ID] => 10 [DATE_INSERT] => Bitrix\Main\Type\DateTime Object ( [valuerotected] => DateTime Object ( [date] => 2018-04-04 16:23:12.000000 [timezone_type] => 3 [timezone] => Europe/Moscow ) ) [DATE_UPDATE] => Bitrix\Main\Type\DateTime Object ( [valuerotected] => DateTime Object ( [date] => 2018-04-04 16:23:12.000000 [timezone_type] => 3 [timezone] => Europe/Moscow ) ) [PERSON_TYPE_ID] => 1 [USER_ID] => 1 [PAYED] => N [DATE_PAYED] => [EMP_PAYED_ID] => [DEDUCTED] => N [DATE_DEDUCTED] => [EMP_DEDUCTED_ID] => [REASON_UNDO_DEDUCTED] => [STATUS_ID] => N [DATE_STATUS] => Bitrix\Main\Type\DateTime Object ( [valuerotected] => DateTime Object ( [date] => 2018-04-04 16:23:12.000000 [timezone_type] => 3 [timezone] => Europe/Moscow ) ) [EMP_STATUS_ID] => 1 [MARKED] => N [DATE_MARKED] => [EMP_MARKED_ID] => [REASON_MARKED] => [PRICE_DELIVERY] => 0.0000 [ALLOW_DELIVERY] => N [DATE_ALLOW_DELIVERY] => [EMP_ALLOW_DELIVERY_ID] => [RESERVED] => N [PRICE] => 5900.0000 [CURRENCY] => RUB [DISCOUNT_VALUE] => 0.0000 [TAX_VALUE] => 0.00 [SUM_PAID] => 0.00 [USER_DESCRIPTION] => [PAY_VOUCHER_NUM] => [PAY_VOUCHER_DATE] => [ADDITIONAL_INFO] => [COMMENTS] => [COMPANY_ID] => 0 [CREATED_BY] => 1 [RESPONSIBLE_ID] => [STAT_GID] => [DATE_PAY_BEFORE] => [DATE_BILL] => [IS_RECURRING] => N [RECURRING_ID] => [LOCKED_BY] => [DATE_LOCK] => [RECOUNT_FLAG] => Y [AFFILIATE_ID] => [DELIVERY_DOC_NUM] => [DELIVERY_DOC_DATE] => [UPDATED_1C] => N [ORDER_TOPIC] => [XML_ID] => [ID_1C] => [VERSION_1C] => [VERSION] => 0 [EXTERNAL_ORDER] => N [STORE_ID] => [CANCELED] => N [EMP_CANCELED_ID] => [DATE_CANCELED] => [REASON_CANCELED] => [BX_USER_ID] => 544371a2469e61b53b66e7d396849462 [RUNNING] => N [IS_ALLOW_PAY] => Y [PAYMENT_ID] => 736 ) )
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.04.2018, 16:26
Ответы с готовыми решениями:

Вытащить значение из массива?
Есть массив: { "status" : "success", "prices" : } Надо по...

Вытащить значение из файла
Здравствуйте! Я новичок в php, делаю бота для телеграма, точнее ответы на...

Вытащить значение из input в переменную
Привет! Вроде бы простой вопрос, но погуглив, вразумительного ответа не нашел....

Нужно вытащить значение из JavaScript в PHP
Все находится в PHP файле. Допустим footer.php. <script language="JavaScript">...

Как вытащить значение тега из xml в php5
как вытащить значение тега из xml в php5 <?xml version="1.0"...

6
Jodah
Эксперт PHP
2847 / 2479 / 1056
Регистрация: 01.08.2012
Сообщений: 8,771
04.04.2018, 18:33 2
PHP
1
echo $arResult[45][736]['SUM'];
0
xTr1m
29 / 29 / 16
Регистрация: 06.03.2013
Сообщений: 159
04.04.2018, 20:18  [ТС] 3
спасибо, но это тут магические числа присутствуют. а у меня текст может быть разный. то есть простого обращения типа $arResult["PRICE"] нет?
0
Jodah
Эксперт PHP
2847 / 2479 / 1056
Регистрация: 01.08.2012
Сообщений: 8,771
04.04.2018, 20:30 4
Лучший ответ Сообщение было отмечено xTr1m как решение

Решение

xTr1m, нет, но если структура неизменна и меняются только названия ключей, можно пройтись циклом.

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
foreach($arResult as $v1)
{
    if(is_array($v1))
    {
        foreach($v1 as $v2)
        {
            if(isset($v2['SUM']))
            {
                echo $v2['SUM'];
                break 2;
            }
        }
    }
}
0
xTr1m
29 / 29 / 16
Регистрация: 06.03.2013
Сообщений: 159
05.04.2018, 12:26  [ТС] 5
Вот это очень круто. А есть вариант, чтобы рекурсивно пробежать по вообще всему, а то вдруг какая-то другая структура будет?

Добавлено через 23 минуты
Cannot use object of type Bitrix\Main\Type\DateTime as array (0)
/home/m/mboot/bitrix_4/public_html/bitrix/templates/aspro_mshop/components/bitrix/sale.order.ajax/new/confirm.php:17

на вот этой строке: if(isset($v2['SUM']))
может есть какой-то другой метод проверить, что ключ SUM есть?
0
Jodah
Эксперт PHP
2847 / 2479 / 1056
Регистрация: 01.08.2012
Сообщений: 8,771
05.04.2018, 14:42 6
Лучший ответ Сообщение было отмечено xTr1m как решение

Решение

Цитата Сообщение от xTr1m Посмотреть сообщение
Cannot use object of type Bitrix\Main\Type\DateTime as array (0)
Значит надо добавить проверку на массив:
PHP
1
if(is_array($v2) and isset($v2['SUM']))
Добавлено через 5 минут
Цитата Сообщение от xTr1m Посмотреть сообщение
А есть вариант, чтобы рекурсивно пробежать по вообще всему, а то вдруг какая-то другая структура будет?
Можно:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
$arResult = [
    0 => array(),
    1 => 'dick',
    2 => new StdClass(),
    33 => [
        86 => [
            'id' => 15,
            'SomeValue' => [
                'SUM' => 450
            ]
        ],
    ]
];
 
function searchSum($var)
{
    if(is_array($var))
    {
        if(isset($var['SUM']))
            return $var['SUM'];
        
        foreach($var as $v)
        {
            $sum = searchSum($v);
            
            if($sum)
                return $sum;
        }
    }
}
 
$sum = searchSum($arResult);
echo $sum;
0
xTr1m
29 / 29 / 16
Регистрация: 06.03.2013
Сообщений: 159
13.05.2018, 21:21  [ТС] 7
Нереальный респект!
0
13.05.2018, 21:21
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.05.2018, 21:21

Вытащить из массива
Господа! Подскажите пожалуйста как мне вытащить из массива следующего вида ...

Рекурсивно вытащить id из массива
Есть большой массив вида ... => Array ( => 261 ...

Вытащить значения с массива
Хоть убейте , толи не думается сегодня толи что я делаю не так . На выходе...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru