PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (1): [1]

> Найдено сообщений: 7
SJoe Отправлено: 29 Ноября, 2016 - 16:59:03 • Тема: Разобрать массив • Форум: Вопросы новичков

Ответов: 15
Просмотров: 564
Второй вариант то что доктор прописал Улыбка

Спасибо тебе большое. Очень помог и выручил.

Если можешь посоветуй пожалуйста, хороший ресур чтобы почитать про json. Спасибо еще раз,
SJoe Отправлено: 29 Ноября, 2016 - 16:23:58 • Тема: Разобрать массив • Форум: Вопросы новичков

Ответов: 15
Просмотров: 564
Мелкий пишет:
Я, конечно, запросто и ошибиться могу.
Но у меня вроде при записи json_encode написан.


Спасибо тебе огромное Улыбка все работает отлично.

Можешь подсказать как в первом скрипте сделать так чтобы в конечный файл result, который содержит маассив данных еще дописывалась переменная $msisdn в каждую строку.

Тогда конечный файл result будет вообще содержать всю необходимую мне информацию, Спасибо тебе большое заранее.
SJoe Отправлено: 29 Ноября, 2016 - 12:17:58 • Тема: Разобрать массив • Форум: Вопросы новичков

Ответов: 15
Просмотров: 564


Получю ошибку при выполнение первого скрипта, ругается на эту строку:
file_put_contents('result', json_decode($result));

PHP Warning: json_decode() expects parameter 1 to be string, array given in ../test on line 30
SJoe Отправлено: 29 Ноября, 2016 - 11:25:46 • Тема: Разобрать массив • Форум: Вопросы новичков

Ответов: 15
Просмотров: 564
Мелкий пишет:
Покажите исходный JSON тогда. Как-то не хочу угадывать его структуру.


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

<?php

$test_n = file('test_numbers');

$result = fopen('result','a');

$ch = curl_init();

foreach ($test_n as $msisdn) {

$url = "http://x.x.x.x:xxxx/service=MAPST_SND_RTISM_REQ&version=3&MAPPN_dest_address=6,".trim($msisdn)."&MAPPN_orig_address=8,11111111111&MAPPN_invoke_id=1&MAPPN_msisdn=22222222222&MAPPN_sm_rp_pri=0&MAPPN_sc_addr=11111111111";

fwrite($result);

curl_setopt_array($ch, array(
CURLOPT_URL => "$url",
CURLOPT_VERBOSE => True,
CURLOPT_RETURNTRANSFER => True,
CURLOPT_FILE => $result,
));
curl_exec($ch);
}

curl_close($ch);
fclose($result);

?>

результат записывается в файл "result" в следующем формате:

cat result
{
"service" : "MAPST_SND_RTISM_CNF",
"MAPPN_result" : "0",
"MAPPN_applic_context" : "0x060704000001001403",
"MAPPN_dest_address" : "8,22222222222",
"MAPPN_orig_address" : "6,11111111111,6666",
"MAPPN_invoke_id" : "1",
"MAPPN_imsi" : "456454545454",
"MAPPN_msc_num" : "888888888880"
}{
"service" : "MAPST_SND_RTISM_CNF",
"MAPPN_result" : "0",
"MAPPN_applic_context" : "0x060704000001001403",
"MAPPN_dest_address" : "8,22222222211",
"MAPPN_orig_address" : "6,11111111111,6666",
"MAPPN_invoke_id" : "1",
"MAPPN_imsi" : "357544574547",
"MAPPN_msc_num" : "888888888888"
}

я хочу разобрать этот файл и сгенировать отчет для себя в удобочитаемом виде.

к примеру:

результат \t Номер А \t Номер Б \t IMSI \t Номер сети

когда пытаюсь преобразовать этот файл в массив то получаю ошибку:
$report = file('result');
$obj = json_decode($report);

./report
PHP Warning: json_decode() expects parameter 1 to be string, array given in ../report on line 6

Заранее спасибо.
SJoe Отправлено: 29 Ноября, 2016 - 00:20:35 • Тема: Разобрать массив • Форум: Вопросы новичков

Ответов: 15
Просмотров: 564
Мелкий пишет:
Вот почему мне кажется, что у вас вообще JSON в исходнике, который вы потом странным образом выводите?..



Я действительно почитал про JSON формат и ты прав.
Подскажи как теперь использую json_decode можно это все привести к формату который я описал выше.
Заранее спасибо.
SJoe Отправлено: 28 Ноября, 2016 - 19:45:43 • Тема: Разобрать массив • Форум: Вопросы новичков

Ответов: 15
Просмотров: 564
Строитель пишет:
SJoe, задача не понятна... Что нужно получить из этой строки:

Key: 50; Value: "SER_a_num" : "1,4444444444"

?


из этой строчки получить нужно номер телефона: 4444444444

то есть конечный результат должен выглядит вот так:

Номер телефона\tА Номер\tБ Номер\tНомер сети
telephone_number\t4444444444\t5555555555\t1232134234
telephone_number\t3333333333\t6666666666\t3443434343
и т.д.
SJoe Отправлено: 28 Ноября, 2016 - 17:00:30 • Тема: Разобрать массив • Форум: Вопросы новичков

Ответов: 15
Просмотров: 564
Добрый день всем!

У меня на выходе есть вот такой массив, где данные записываются в следющем формате:

Key: 45; Value: telephone_number
Key: 46; Value: {
Key: 47; Value: "SER" : "Command_CNF",
Key: 48; Value: "SER_res" : "0",
Key: 50; Value: "SER_a_num" : "1,4444444444",
Key: 51; Value: "SER_b_num" : "2,5555555555,9999",
Key: 53; Value: "SER_num_int" : "54634346346",
Key: 54; Value: "SER_num_net" : "1232134234"
Key: 55; Value: telephone_number
и т.д.

Мне нужно данные по конректному номеру записать в одну строку, чтобы в итоге получился следующий форма:
Номер телефона\tА Номер\tБ Номер\tНомер сети

к примеру пытаюсь получить только А номер, но не получается, подскажите пожалуйста где может быть ошибка:
foreach ($report as $key => $value) {
$num_pos = strpos($value, "a_num" : \"");
$imsi = substr($value, $num_pos);
}

Страниц (1): [1]
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB