Чем разобрать строку

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

skysilver
Сообщения: 3006
Зарегистрирован: Чт авг 21, 2014 8:28 am
Откуда: Киров, Россия
Благодарил (а): 400 раз
Поблагодарили: 1753 раза
Контактная информация:

Re: Чем разобрать строку

Сообщение skysilver » Пт мар 22, 2019 11:59 am

Svetлая писал(а):
Пт мар 22, 2019 11:49 am
Правильно?
Почти. PHP_EOL не нужен при записи в свойство, это перенос на новую строку, чтобы при отладке красиво выводилось на странице, а не в кучу.

Код: Выделить всё

setGlobal("Vasy.wifi", $data->wifi);
За это сообщение автора skysilver поблагодарил:
Svetлая (Пт мар 22, 2019 12:53 pm)
Рейтинг: 1.16%
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
Аватара пользователя
Svetлая
Сообщения: 238
Зарегистрирован: Вс май 06, 2018 11:36 pm
Благодарил (а): 80 раз
Поблагодарили: 75 раз
Контактная информация:

Re: Чем разобрать строку

Сообщение Svetлая » Пт мар 22, 2019 12:53 pm

Проверила, всё работает)).
Спасибо))
Аватара пользователя
KVN
Сообщения: 89
Зарегистрирован: Ср ноя 14, 2018 12:27 pm
Откуда: UA
Благодарил (а): 25 раз
Поблагодарили: 3 раза

Re: Чем разобрать строку

Сообщение KVN » Ср май 17, 2023 1:00 pm

Вдогонку вопрос ... :?:

Хочу получить данные с сайта https://bank.gov.ua/NBUStatService/v1/s ... e=EUR&json

Получаю ответ:
[
{
"r030":978,"txt":"Євро","rate":39.8104,"cc":"EUR","exchangedate":"17.05.2023"
}
]


Не знаю как побороть скобки [ ]

Вот мой код скрипта:
$data_exchange = json_decode(file_get_contents("https://bank.gov.ua/NBUStatService/v1/s ... e=EUR&json"));
$txt_exchange = $data_exchange->cc;
setGlobal('Exchange.txt', $txt_exchange);


Подскажите как правильно?!
Мой CONNECT
Ubuntu Linux 16.04.5 LTS, Источник обновлений ядра: Мастер
Acer Aspire One D270
odinvolk
Сообщения: 52
Зарегистрирован: Ср май 31, 2017 3:06 am
Откуда: odinwolk@gmail.com
Благодарил (а): 191 раз
Поблагодарили: 18 раз

Re: Чем разобрать строку

Сообщение odinvolk » Ср май 17, 2023 2:01 pm

квадратные скобки это массив

получантся что это массив в массиве

разбирается примерно так
СпойлерПоказать

Код: Выделить всё

$array = array(
    '0' => array(
        'r030' => '978',
        'txt' => 'Євро',
        'rate' => '39,8104',
        'cc' => 'EUR',
        'exchangedate' => '17.05.2023'
    )
);

Код: Выделить всё

$data_exchange = file_get_contents("https://bank.gov.ua/NBUStatService/v1/s ... e=EUR&json");
$json = json_decode($data_exchange, true);

$r030 = $json['r030'][0]['0']; // вот нулевой параметр в нулевом массиве
$txt = $json['txt'][0]['1'];
$rate = $json['rate'][0]['2'];
$cc = $json['cc'][0]['3'];
$exchangedate = $json['exchangedate'][0]['4'];

setGlobal('Exchange.txt', $r030); // и так далее
Последний раз редактировалось odinvolk Чт май 18, 2023 11:54 am, всего редактировалось 1 раз.
За это сообщение автора odinvolk поблагодарил:
KVN (Ср май 17, 2023 4:26 pm)
Рейтинг: 1.16%
Connect ---- Telegram
Яндекс.Деньги для благодарностей за помощь или нажмите кнопку "Спасибо"!!!
odinvolk
Сообщения: 52
Зарегистрирован: Ср май 31, 2017 3:06 am
Откуда: odinwolk@gmail.com
Благодарил (а): 191 раз
Поблагодарили: 18 раз

Re: Чем разобрать строку

Сообщение odinvolk » Ср май 17, 2023 2:19 pm

https://snipp.ru/tools/parser-json

попробуй онлайн конвертер чтобы понять
За это сообщение автора odinvolk поблагодарил:
KVN (Ср май 17, 2023 4:26 pm)
Рейтинг: 1.16%
Connect ---- Telegram
Яндекс.Деньги для благодарностей за помощь или нажмите кнопку "Спасибо"!!!
Аватара пользователя
KVN
Сообщения: 89
Зарегистрирован: Ср ноя 14, 2018 12:27 pm
Откуда: UA
Благодарил (а): 25 раз
Поблагодарили: 3 раза

Re: Чем разобрать строку

Сообщение KVN » Ср май 17, 2023 3:07 pm

Спасибо за помощь, но пока не получается ...

1. значения свойств все равно пустые
2. разбор json помечает красным &json в конце и пишет что Ничего не найдено
Мой CONNECT
Ubuntu Linux 16.04.5 LTS, Источник обновлений ядра: Мастер
Acer Aspire One D270
Logrus
Сообщения: 2077
Зарегистрирован: Пт апр 07, 2017 12:20 pm
Благодарил (а): 313 раз
Поблагодарили: 456 раз

Re: Чем разобрать строку

Сообщение Logrus » Ср май 17, 2023 4:23 pm

https://www.php.net/manual/ru/function.json-decode.php
обрати внимание на второй аргумент и не надо в примере выше декодировать дважды, далее переменную можно отдебажить вставив в дебмеш
За это сообщение автора Logrus поблагодарил:
KVN (Ср май 17, 2023 4:25 pm)
Рейтинг: 1.16%
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
Аватара пользователя
KVN
Сообщения: 89
Зарегистрирован: Ср ноя 14, 2018 12:27 pm
Откуда: UA
Благодарил (а): 25 раз
Поблагодарили: 3 раза

Re: Чем разобрать строку

Сообщение KVN » Ср май 17, 2023 4:30 pm

Всем спасибо за помощь, разобрался!

Вот решение:
$query = "https://bank.gov.ua/NBUStatService/v1/s ... e=EUR&json";
$data = getURL($query);
$json = json_decode($data,true);

$r030 = $json['0']['r030'];
$txt = $json['0']['txt'];
$rate = $json['0']['rate'];
$cc = $json['0']['cc'];
$exchangedate = $json['0']['exchangedate'];

setGlobal('Exchange.rate', $rate);
setGlobal('Exchange.txt', $txt);
setGlobal('Exchange.cc', $cc);
setGlobal('Exchange.exchangedate', $exchangedate);


и вот иностранный товарищ очень помог https://www.youtube.com/watch?v=a86VTVrvXd8
Мой CONNECT
Ubuntu Linux 16.04.5 LTS, Источник обновлений ядра: Мастер
Acer Aspire One D270
Logrus
Сообщения: 2077
Зарегистрирован: Пт апр 07, 2017 12:20 pm
Благодарил (а): 313 раз
Поблагодарили: 456 раз

Re: Чем разобрать строку

Сообщение Logrus » Ср май 17, 2023 7:21 pm

промежуточные переменные излишни, можно с сг сразу, если так смотреть то и после джейсон_декоде можно не создавать новую переменную, а переписать значение в старой дата
будет и чуть шустрее и меньше памяти съест, ну и сам код хранимый и загружаемый из бд уменьшится
За это сообщение автора Logrus поблагодарил:
KVN (Чт май 18, 2023 11:21 am)
Рейтинг: 1.16%
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
Аватара пользователя
KVN
Сообщения: 89
Зарегистрирован: Ср ноя 14, 2018 12:27 pm
Откуда: UA
Благодарил (а): 25 раз
Поблагодарили: 3 раза

Re: Чем разобрать строку

Сообщение KVN » Чт май 18, 2023 11:21 am

Спасибо, но для начинающего и это прогресс )))
За это сообщение автора KVN поблагодарил:
Logrus (Чт май 18, 2023 4:36 pm)
Рейтинг: 1.16%
Мой CONNECT
Ubuntu Linux 16.04.5 LTS, Источник обновлений ядра: Мастер
Acer Aspire One D270
Ответить