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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> вытащить значение из массива 
:(
    Опции темы
cppGhost
Дата 4.4.2018, 16:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



День добрый, есть у меня переменная $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 ( [value:protected] => 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 ( [value:protected] => DateTime Object ( [date] => 2018-04-04 16:23:12.000000 [timezone_type] => 3 [timezone] => Europe/Moscow ) ) [DATE_UPDATE] => Bitrix\Main\Type\DateTime Object ( [value:protected] => 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 ( [value:protected] => 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 ) )
PM MAIL   Вверх
whatisnot
Дата 4.4.2018, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

Репутация: 1
Всего: 2



Такого [CODE] => [SORT] => 80 [ACTION_FILE] => ... в массиве быть не может, и выводить массив нужно в тег PRE, и такой результат показывать, если хотите получить ответ.
PM MAIL   Вверх
krundetz
Дата 4.4.2018, 18:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вечный странник
***


Профиль
Группа: Завсегдатай
Сообщений: 1400
Регистрация: 14.6.2007
Где: НН(Сормово)

Репутация: 20
Всего: 69



print_r не очень удобен, лучше воспользуйтесь функцией var_dump

а ещё лучше сделайте вот так:
Код

echo '<pre>';
var_dump($arResult);
exit; // чтобы лишнего не было, только вот не помню перехватывает ее битрикс или нет


а вообще какой то PRICE в массиве явно есть

Код

[PRICE] => 5900.0000



--------------------
!цензоры - Хранитель стратегической жидкости
Группа ТГВ
Группа Нижний Новгород
user posted image
PM MAIL   Вверх
whatisnot
Дата 4.4.2018, 18:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

Репутация: 1
Всего: 2



Цитата(krundetz @  4.4.2018,  18:35 Найти цитируемый пост)
print_r не очень удобен


Чем? Если нужно лицезреть типы, то var_dump, а если нужно глянуть на структуру массива, то var_dump как раз лишнее.
PM MAIL   Вверх
cppGhost
Дата 4.4.2018, 20:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



то есть простого обращения типа $arResult["PRICE"] нет?
PM MAIL   Вверх
whatisnot
Дата 4.4.2018, 20:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

Репутация: 1
Всего: 2



Цитата(cppGhost @  4.4.2018,  20:18 Найти цитируемый пост)
то есть простого обращения типа $arResult["PRICE"] нет? 


Если это первичный ключ массива, то можно, но если это в двадцатом колене вложенность, то кончено же нет. Вы же не пишите писем "на деревню дедушке", не дойдет, нужно будет указать имя деревни, где эта деревня, и фамилию дедушки.  


Это сообщение отредактировал(а) whatisnot - 4.4.2018, 20:55
PM MAIL   Вверх
cppGhost
Дата 5.4.2018, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



А если как то рекурсивно пробежаться по всем элементам и найти этот самый ключ SUM?
PM MAIL   Вверх
whatisnot
Дата 5.4.2018, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

Репутация: 1
Всего: 2



Можно и рекурсивно обойти, если не знать расположение, если же известно, то просто сразу обратиться.
PM MAIL   Вверх
krundetz
Дата 5.4.2018, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вечный странник
***


Профиль
Группа: Завсегдатай
Сообщений: 1400
Регистрация: 14.6.2007
Где: НН(Сормово)

Репутация: 20
Всего: 69



Цитата(whatisnot @  4.4.2018,  18:38 Найти цитируемый пост)
Чем? Если нужно лицезреть типы, то var_dump, а если нужно глянуть на структуру массива, то var_dump как раз лишнее. 

тем что если он содержит пустые строки, значения null и false, то структуру массива смотреть не удобно, особенно если его вывели как обычную строку
Цитата(whatisnot @  4.4.2018,  16:44 Найти цитируемый пост)
Такого [code=php] => [SORT] => 80 [ACTION_FILE] => ... в массиве быть не может

ваше же утверждение, а здесь всего лишь пустые значения и вывод в одну строку. А по вашему уже не массив.  smile 

код:
Код

<pre>
<?php

$str = array('1' => '', '2' => null, '3' => false, '4' => 4);

print_r($str);

var_dump($str);


вывод:
Код

Array
(
    [1] => 
    [2] => 
    [3] => 
    [4] => 4
)
array(4) {
  [1]=>
  string(0) ""
  [2]=>
  NULL
  [3]=>
  bool(false)
  [4]=>
  int(4)
}


Цитата(cppGhost @  4.4.2018, 20:18 Найти цитируемый пост)
то есть простого обращения типа $arResult["PRICE"] нет?

вот я вас попросил, да и whatisnot сделать форматированный вывод, потрудитесь немного, тогда получите ответ на свой вопрос


--------------------
!цензоры - Хранитель стратегической жидкости
Группа ТГВ
Группа Нижний Новгород
user posted image
PM MAIL   Вверх
whatisnot
Дата 5.4.2018, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

Репутация: 1
Всего: 2



Цитата(krundetz @  5.4.2018,  15:42 Найти цитируемый пост)
тем что если он содержит пустые строки, значения null и false, то структуру массива смотреть не удобно, особенно если его вывели как обычную строку


Цитата(krundetz @  5.4.2018,  15:42 Найти цитируемый пост)
ваше же утверждение, а здесь всего лишь пустые значения и вывод в одну строку. А по вашему уже не массив. 


Вы уверены в том, что говорите? Не надо путать мух с котлетами. 

В чем противоречие вывода массива $str = array('1' => '', '2' => null, '3' => false, '4' => 4); посредством print_r? Нахрена мне var_dum, если мне нужно узнать структуру массива? Пусто или NULL ее никак не нарушат, и не они приводят к ошибкам [key] => [key] => ...

Не пудрите мине мозги.   

PM MAIL   Вверх
krundetz
Дата 6.4.2018, 10:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вечный странник
***


Профиль
Группа: Завсегдатай
Сообщений: 1400
Регистрация: 14.6.2007
Где: НН(Сормово)

Репутация: 20
Всего: 69



Цитата(whatisnot @  5.4.2018,  16:29 Найти цитируемый пост)
Не пудрите мине мозги.  

вы переоцениваете свою важность для меня

Цитата(whatisnot @  5.4.2018,  16:29 Найти цитируемый пост)
Нахрена мне var_dum, если мне нужно узнать структуру массива? Пусто или NULL ее никак не нарушат, и не они приводят к ошибкам [key] => [key] => ...

1. ругаться не хорошо
2. использовать чтобы не писать вот этого:
Цитата(whatisnot @  4.4.2018,  16:44 Найти цитируемый пост)
Такого [CODE] => [SORT] => 80 [ACTION_FILE] => ... в массиве быть не может

опять повторю что это ваши слова, не мои. Повторю ещё раз ошибки там нет и при использование print_r вывод таким быть может. Смотрите приведенный мной код.

cppGhost
попробуй обратится к $arResult[47]["PRICE"] и $arResult[45][736]["SUM"], но думаю тебе не помешает разобраться в том почему они у тебя хранятся под такими индексами


Это сообщение отредактировал(а) krundetz - 6.4.2018, 10:38


--------------------
!цензоры - Хранитель стратегической жидкости
Группа ТГВ
Группа Нижний Новгород
user posted image
PM MAIL   Вверх
whatisnot
Дата 6.4.2018, 13:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

Репутация: 1
Всего: 2



krundetz, вы может объяснить каким образом незнание или непонимание работы функции, что приводит к таким визуальным ошибками как ключ => ключ =>, может делать автоматически функцию неудобной? var_dump вне тега pre тоже строка и она ничем не лучше print_r, ибо массив как строковое представление в любой из этих функций не дает понимания о его структуре, то бишь где есть нужный нам ключ. А именно это и нужно автору знать, чтобы понимать что предпринять. Ну будь массив в три элемента куда ни шло, но такая портянка... Чем var_dump лучше, что поможет?

Ну что за безапелляционные заявления. Это равноценно как сказать XML полный отстой, не видно типов, не смотря на то, что есть XCD.      

Это сообщение отредактировал(а) whatisnot - 6.4.2018, 13:21
PM MAIL   Вверх
krundetz
Дата 6.4.2018, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вечный странник
***


Профиль
Группа: Завсегдатай
Сообщений: 1400
Регистрация: 14.6.2007
Где: НН(Сормово)

Репутация: 20
Всего: 69



Цитата(whatisnot @  6.4.2018,  13:20 Найти цитируемый пост)
Ну что за безапелляционные заявления. Это равноценно как сказать XML полный отстой, не видно типов, не смотря на то, что есть XCD. 

хм,
Цитата(krundetz @  4.4.2018,  18:35 Найти цитируемый пост)
print_r не очень удобен, лучше воспользуйтесь функцией var_dump

это вы называете безапелляционным?
Цитата(whatisnot @  6.4.2018,  13:20 Найти цитируемый пост)
 вы может объяснить каким образом незнание или непонимание работы функции, что приводит к таким визуальным ошибками как ключ => ключ =>, может делать автоматически  функцию неудобной?

именно незнание ТС предмета делает функцию print_r крайне неудобной. Он пока не разберется в предмете так и продолжит себе этой функцией пальцы прищемлять.
Да и вас она в заблуждение ввела.
Цитата(whatisnot @  4.4.2018,  16:44 Найти цитируемый пост)
Такого [CODE] => [SORT] => 80 [ACTION_FILE] => ... в массиве быть не может

ваши же слова?

По заявлению разработчиков
Цитата

print_r — Выводит удобочитаемую информацию о переменной

вот объясните мне как пустая строка (вместо false или null) будет удобочитаемой? Особенно новичкам, которые с собственных массивах разобраться не могут?

Поэтому я и рекомендую использовать var_dump.




Это сообщение отредактировал(а) krundetz - 6.4.2018, 15:41


--------------------
!цензоры - Хранитель стратегической жидкости
Группа ТГВ
Группа Нижний Новгород
user posted image
PM MAIL   Вверх
whatisnot
Дата 6.4.2018, 18:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

Репутация: 1
Всего: 2



krundetz, все что вы пишите философия на голом месте, мануал автору надо читать, ибо какой бы функцией не вывести портянку его массива вне тега pre, она ему ничего не подскажет. Для понимания где искать нужное, нужно видеть структур массива, а ее надо знать как выводить корректно, все ваши остальные доводы от лукавого.
PM MAIL   Вверх
krundetz
Дата 9.4.2018, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вечный странник
***


Профиль
Группа: Завсегдатай
Сообщений: 1400
Регистрация: 14.6.2007
Где: НН(Сормово)

Репутация: 20
Всего: 69



Цитата(whatisnot @  6.4.2018,  18:43 Найти цитируемый пост)
krundetz, все что вы пишите философия на голом месте

у меня как раз обратное впечатление.

Я вам аргументировал и кодом и цитатами из мануала. От вас я увидел только поток сознания. Вы не ответили ни на один мой вопрос, хотя их было несколько.

Последний вопрос такой зачем мне нужна функция print_r, если все тоже самое и даже больше я получу используя var_dump или var_export?




--------------------
!цензоры - Хранитель стратегической жидкости
Группа ТГВ
Группа Нижний Новгород
user posted image
PM MAIL   Вверх
whatisnot
Дата 9.4.2018, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

Репутация: 1
Всего: 2



Цитата(krundetz @  9.4.2018,  10:47 Найти цитируемый пост)
Последний вопрос такой зачем мне нужна функция print_r, если все тоже самое и даже больше я получу используя var_dump или var_export?


Это вы себя спросите, чем удобнее var_dump, если нужно знать только структуру? Ничем. Беда автора не в том, что они использовал print_r, а в том, что он не знает как ее правильно использовать. Все остальное, это просто демагогия. 
PM MAIL   Вверх
krundetz
Дата 9.4.2018, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вечный странник
***


Профиль
Группа: Завсегдатай
Сообщений: 1400
Регистрация: 14.6.2007
Где: НН(Сормово)

Репутация: 20
Всего: 69



Цитата(whatisnot @  9.4.2018,  15:30 Найти цитируемый пост)
Это вы себя спросите

Я вас спрашивал. Но раз вы настаиваете повторю свои аргументы за использование var_dump вместо print_r

1. вывод print_r не всегда очевиден.
2. есть аналоги с более очевидным выводом.
3. новичку легче научиться пользоваться 1-ой функцией чем 2-мя, особенно когда он толком не понимает многих особенностей языка.
4. новички используют print_r согласно мануалу для вывода удобочитаемой информации о переменной, а не только для просмотра структуры массива. Только вот есть пункт 1.

Цитата(whatisnot @  9.4.2018,  15:30 Найти цитируемый пост)
Все остальное, это просто демагогия. 

Вы меня уже в чем только не обвинили, и в философии на голом месте, и в том что я вам пудрю мозги, и в том что путаю мух с котлетами, и в том что доводы у меня от лукавого, теперь вот в демагоги записали. Может лучше аргументы за print_r приводить будете, или контраргументы для var_dump?


--------------------
!цензоры - Хранитель стратегической жидкости
Группа ТГВ
Группа Нижний Новгород
user posted image
PM MAIL   Вверх
whatisnot
Дата 9.4.2018, 17:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

Репутация: 1
Всего: 2



Опять демагогии на целый том. Вы чем забиваете гвозди, надеюсь молотком, а не пневмомолот? Товарищу просто надо знать как правильно структуру массива отобразить, и это все. Я никоим образом не против функции var_dump, а просто не понимаю когда делают заявления, которые по сути к проблеме отношения не имеют.

    
PM MAIL   Вверх
krundetz
Дата 10.4.2018, 11:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вечный странник
***


Профиль
Группа: Завсегдатай
Сообщений: 1400
Регистрация: 14.6.2007
Где: НН(Сормово)

Репутация: 20
Всего: 69



Цитата(whatisnot @  9.4.2018,  17:51 Найти цитируемый пост)
Опять демагогии на целый том. Вы чем забиваете гвозди, надеюсь молотком, а не пневмомолот? Товарищу просто надо знать как правильно структуру массива отобразить, и это все. Я никоим образом не против функции var_dump, а просто не понимаю когда делают заявления, которые по сути к проблеме отношения не имеют.

1. Я подсказал ТС вариант который считаю оптимальным для решения его проблем
2. Я по вашей замечу просьбе несколько раз обосновал свою точку зрения
3. Вас она видимо не устраивает, но аргументов вы не приводите
4. Зато пишите куча обвинений в мой адрес уж точно не по сути проблемы
5. Если вы что то не понимаете то ЭТО ВАШИ ПРОБЛЕМЫ

Внимательный читатель выводы сделает. На этом нашу дискуссию считаю закрытой.



--------------------
!цензоры - Хранитель стратегической жидкости
Группа ТГВ
Группа Нижний Новгород
user posted image
PM MAIL   Вверх
whatisnot
Дата 10.4.2018, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

Репутация: 1
Всего: 2



Было бы что читать smile Я ведь не потому написал, чтобы уколоть, а потому, что замечание о неудобности было не к месту. Это как рассуждать о жизни на Марсе, когда этого не требуется. 

И согласен, это пустой разговор - PRE -> функция, все что надо было, а уж какая из них не суть важно.

Это сообщение отредактировал(а) whatisnot - 10.4.2018, 14:12
PM MAIL   Вверх
_zorn_
Дата 10.4.2018, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 21.8.2007

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



В плюс к предыдущему оратору - var_dump например дампит стримом, а print_r сначала в памяти собирает. 
Чем это грозит ?
Если в браузер "вардампнишь" объект с НЕОЧЕВИДНЫМИ рекурсивными ссылками - пиши пропало, считай комп надо перезагружать. print_r же просто ругнется на нехватку памяти (если конечно memory_limit выставлен)

Ну для проверки можете дампнуть какой нибудь Entity доктриновский  smile 
Это все при условии что на локальном компе разработка идет (php -S). За сервак я боюсь отвечать при таких условиях )

Это сообщение отредактировал(а) _zorn_ - 10.4.2018, 15:52
PM MAIL   Вверх
krundetz
Дата 11.4.2018, 11:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вечный странник
***


Профиль
Группа: Завсегдатай
Сообщений: 1400
Регистрация: 14.6.2007
Где: НН(Сормово)

Репутация: 20
Всего: 69



Цитата(_zorn_ @  10.4.2018,  15:35 Найти цитируемый пост)
В плюс к предыдущему оратору - var_dump например дампит стримом, а print_r сначала в памяти собирает. 

1. интересная информация, вот ради этого и велась вся полемика с whatisnot.
2. с таким поведением не сталкивался, возможно из-за xdebug, он вроде регулирует поведение var_dump
3. можно пруф на подробное описание, а то что то google ничего не выдает


--------------------
!цензоры - Хранитель стратегической жидкости
Группа ТГВ
Группа Нижний Новгород
user posted image
PM MAIL   Вверх
whatisnot
Дата 12.4.2018, 10:25 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

Репутация: 1
Всего: 2



Цитата(krundetz @  11.4.2018,  11:22 Найти цитируемый пост)
вот ради этого и велась вся полемика с whatisnot


Полемика непонятная. Можно долго говорить о достоинствах или недостатках чего-то, это одно и имеет место быть в рамках как раз отвлеченной полемики. Подвергать же критике одно, говоря о достоинствах другого в контексте когда ни одно из этого не применяется по назначению (как следует), это уже не полемика, а болтовня. smile

Обе этих функции предполагают форматированный вывод, поэтому в них содержится код перевода строки и пробелы для отступов, при этом var_dump использует два пробела на один уровень, а print_r четыре. Если бы вывод данных функций производился в Блокнот, тогда бы и разговоров не было. Но в данном случае все в контексте веб, блокнотом является браузер, и это не текст, а html, а перевод строки в нем трактуется как пробел. Это нужно знать и понимать, тогда еще до вывода знаем, что получим не то, чего хочется, и не важно какую функцию будем использовать. 

Задачей является вычисление "адреса", а в потоке строки вычислить его сложно, хотя и можно. На каком основании при этом можно утверждать, что одно лучше или хуже другого? Тут ведь ошибка не в применении "нужной" функции, а в представлении результата работы функции, который не дает ответа на вопрос - "где живет адресат?". Это ведь абсурдно, также, как если бы перемешать дома какого либо квартала, и поэтому не найдя в нем нужного дома, утверждать, что если бы перемешивали против часовой стрелки, то было бы лучше. smile

Если же говорить отвлеченно, то даже в этом случае некорректно утверждать, что одна функция лучше другой, просто каждая из них выполняет то, что ей и предписано. Print_r удобнее для представления структуры хотя бы уже потому, что четыре пробела на отступ, а это табуляция по умолчанию, и стилем расстановки фигурных скобок. Var_dump к тому же выводит типы с переносом на новую строку, что несколько осложняет восприятие структуры массива.

В силу того, что print_r использует память ее вывод можно перехватить в переменную, что можно использовать для простой отладки в ajax-запросах. При этом если для просмотра используется alert, то достаточно просто echo print_r(array, 1), но и не проблема добавить в строку и тег pre.

Но если нужно просмотреть типы в массиве, то только глупец может утверждать, что print_r для этого удобнее, ибо она просто не делает этого.

А это об иной функции, хотя если развести полемику ненужную, то также можно говорить долго, доказывая, что одно лучше/хуже другого. Это не редко наблюдаемое явление - $row = ...fetch_array($result) без указания того, что нужно, хотя используется только ассоциативный набор. Это при том, что есть и fetch_assoc(). И такая банальная привычка приводит к банальным ошибкам, над которыми героически борются на клиенте, вместо того, чтобы использовать грамотно fetch_array() или же вместо нее fetch_assoc().

Но можно ли в этом случае утверждать, что fetch_array() неудобная функция? Утверждать конечно же можно, но только если ради рассмешить ежика. Матчасть изучать надо, вот в чем суть, а полемизировать в таких случаях вредно, ибо это может утвердить в сознании начинающего неверное представление или даже пагубное убеждение. В этом была суть моего вопроса - чем одно, лучше другого.        
              


Это сообщение отредактировал(а) whatisnot - 12.4.2018, 10:27
PM MAIL   Вверх
krundetz
Дата 12.4.2018, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вечный странник
***


Профиль
Группа: Завсегдатай
Сообщений: 1400
Регистрация: 14.6.2007
Где: НН(Сормово)

Репутация: 20
Всего: 69



Цитата(whatisnot @  12.4.2018,  10:25 Найти цитируемый пост)
В силу того, что print_r использует память ее вывод можно перехватить в переменную

я так понял речь про второй параметр, установленный в true?

Цитата(whatisnot @  12.4.2018,  10:25 Найти цитируемый пост)
что можно использовать для простой отладки в ajax-запросах.

вот это не понял, ответ и так и так строка, в чем подвох?


Это сообщение отредактировал(а) krundetz - 12.4.2018, 15:21


--------------------
!цензоры - Хранитель стратегической жидкости
Группа ТГВ
Группа Нижний Новгород
user posted image
PM MAIL   Вверх
whatisnot
Дата 12.4.2018, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

Репутация: 1
Всего: 2



Цитата(krundetz @  12.4.2018,  15:20 Найти цитируемый пост)
я так понял речь про второй параметр, установленный в true?


Да, но это если ради полемики, говоря о каких-то достоинствах/возможностях функции, а в контексте не надлежащего ее использования, это не имеет никого значения.


Цитата(krundetz @  12.4.2018,  15:20 Найти цитируемый пост)
вот это не понял, ответ и так и так строка, в чем подвох?


Тут нет подвоха - alert выводит текст как есть, то есть, если в тексте есть перевод строки, то будет вывод в новую строку, и учитываются все пробелы, поэтому достаточно просто вывести результат функции. Но если, к примеру, в клиентском сценарии ответ сервера выводить на страницу, то будет тоже самое, что и у автора поста, поэтому и требуется обрамлять тегом PRE, а чтобы не делать добавок  ради этого в клиентском сценарии, это же мелкая отладка, то выгоднее это сделать на сервере. 

PS. Кстати, может попадалось на глаза такое чудо, когда производят вывод в браузер так?

Код

echo "<option>....</option>\r\n";


Видимо тоже надеются, что увидят красоту в нем. А такими примерами изобилует и руководство РНР на официальном сайте, и хоть бы для приличия тег PRE был упомянут, ан нет, вот и растут ноги проблем всяких, а читать же лень. )     

Это сообщение отредактировал(а) whatisnot - 12.4.2018, 20:39
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.2333 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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