PHP . SU
Программирование на PHP, MySQL и другие веб-технологии
Без описания
Поиск в теме | Версия для печати
mstdmstd
Отправлено: 04 Октября, 2019 - 15:28:42
Частый гость
Покинул форум
Сообщений всего: 170
Дата рег-ции: Авг. 2014
Помог: 0 раз(а)
Всем привет
Получаю массив данных (20 элементов около 50 полей каждый )курлом
Нужно сделать демо-версию этих данных и завернуть эти данные в php-массив
Вручную это довольно долго ...
Вроде в есть спец функция для этого ?
Спасибо!
mstdmstd
Отправлено: 04 Октября, 2019 - 17:21:15
Частый гость
Покинул форум
Сообщений всего: 170
Дата рег-ции: Авг. 2014
Помог: 0 раз(а)
Я сделал :
PHP:
скопировать код в буфер обмена
$json = 'Array
(
[0] => stdClass Object
(
[documentId] => 8lnAjG0B8Afq4kl6-fGi
[verified] =>
[commentsCount] => 433
[likesCount] => 53262
[edgeCount] => 12
...
[TotalCount] => 945
[ListId] =>
[ListName] =>
[IsBusinessAccount] =>
)
[19] => stdClass Object
(
[documentId] => BlXxbW0B8Afq4kl6Bf2t
[verified] =>
[commentsCount] => 26
[likesCount] => 1521
[edgeCount] => 12
...
[TotalCount] => 369
[ListId] =>
[ListName] =>
[IsBusinessAccount] => 1
)
)' ;
$data = json_decode($json,1);
echo $data;
и ничего не вывело . что неправильно?
Vladimir Kheifets
Отправлено: 04 Октября, 2019 - 19:57:30
Частый посетитель
Покинул форум
Сообщений всего: 879
Дата рег-ции: Март 2017
Откуда: Германия, Бавария
Помог: 37 раз(а)
mstdmstd пишет: Я сделал :
PHP:
скопировать код в буфер обмена
$json = 'Array
(
[0] => stdClass Object
(
[documentId] => 8lnAjG0B8Afq4kl6-fGi
[verified] =>
[commentsCount] => 433
[likesCount] => 53262
[edgeCount] => 12
...
[TotalCount] => 945
[ListId] =>
[ListName] =>
[IsBusinessAccount] =>
)
[19] => stdClass Object
(
[documentId] => BlXxbW0B8Afq4kl6Bf2t
[verified] =>
[commentsCount] => 26
[likesCount] => 1521
[edgeCount] => 12
...
[TotalCount] => 369
[ListId] =>
[ListName] =>
[IsBusinessAccount] => 1
)
)' ;
$data = json_decode($json,1);
echo $data;
и ничего не вывело . что неправильно?
Добрый день!
В json_decode возвращает объект, а в переменной $json д.б. строка в формате json.
Пример.
$json - получаю Response через curl
Спойлер (Отобразить ) Цитата: {"auditData":{"processTime":"2007","timestamp":"2019-09-26 07:58:21.070","requestHost":"78.46.152.62, 70.132.4.153, 176.34.239.204","serverId":"ip-10-185-88-61.eu-west-1.compute.internal.node.int-hbg-aws-eu-west-1.discovery#A+","environment":"[awseuwest1, awseuwest1a, ip_10_185_88_61]","release":"c37fc41cb909662dde28308eef3ef5094fd6d248","token":"e0277681-b7fa-4f07-85cd-8e9408ef5f15","internal":"null||||0|1||||||||||||1|||0|0||0|null|||"},"booking":{"reference":"1-4386132","cancellationReference":"ADK51QGTOG","clientReference":"AB717","creationDate":"2019-09-26","status":"CANCELLED","modificationPolicies":{"cancellation":false,"modification":false},"creationUser":"zwbhpxagmgkkukrbfaqab7nm","holder":{"name":"AAAAAAAA","surname":"BBBBB"},"hotel":{"checkOut":"2019-10-19","checkIn":"2019-10-18","code":65983,"name":"Amic Colon","categoryCode":"3EST","categoryName":"3 STARS","destinationCode":"PMI","destinationName":"Majorca","zoneCode":10,"zoneName":"Palma","latitude":"39.5805941617829","longitude":"2.65222460031509","rooms":[{"status":"CANCELLED","id":1,"code":"DBT.ST","name":"Double or Twin STANDARD","paxes":[{"roomId":1,"type":"AD","name":"cccccc","surname":"dddddddd"},{"roomId":1,"type":"AD","name":"aaaaaaaa","surname":"bbbbb"}],"rates":[{"rateClass":"NOR","net":"0.00","sellingRate":"89.00","hotelMandatory":true,"rateComments":"Car park NO.","paymentType":"AT_WEB","packaging":false,"boardCode":"RO","boardName":"ROOM ONLY","cancellationPolicies":[{"amount":"83.60","from":"2019-10-16T23:59:00+02:00"}],"rooms":1,"adults":2,"children":0}]}],"totalSellingRate":"0","totalNet":"0.00","currency":"EUR","supplier":{"name":"HOTELBEDS SPAIN, S.L.U.","vatNumber":"ESB28916765"},"cancellationAmount":0},"invoiceCompany":{"code":"E14","company":"HOTELBEDS S.L.U.","registrationNumber":"ESB57218372"},"totalSellingRate":0,"totalNet":0.00,"pendingAmount":0.00,"currency":"EUR"}}
json_decode возвращает массивСпойлер (Отобразить ) PHP:
скопировать код в буфер обмена
stdClass Object
(
[ auditData] => stdClass Object
(
[ processTime] => 2007
[ timestamp] => 2019 - 09- 26 07: 58 : 21. 070
[ requestHost] => 78. 46. 152. 62, 70. 132. 4. 153, 176. 34. 239. 204
[ serverId] => ip- 10 - 185 - 88 - 61. eu- west- 1. compute. internal. node. int- hbg- aws- eu- west- 1. discovery#A+
[ environment] => [ awseuwest1, awseuwest1a, ip_10_185_88_61]
[ release] => c37fc41cb909662dde28308eef3ef5094fd6d248
[ token] => e0277681- b7fa- 4f07- 85cd- 8e9408ef5f15
[ internal] => null |||| 0 | 1 |||||||||||| 1 ||| 0 | 0 || 0 | null|||
)
[ booking] => stdClass Object
(
[ reference] => 1- 4386132
[ cancellationReference] => ADK51QGTOG
[ clientReference] => AB717
[ creationDate] => 2019- 09- 26
[ status] => CANCELLED
[ modificationPolicies] => stdClass Object
(
[ cancellation] =>
[ modification] =>
)
[ creationUser] => zwbhpxagmgkkukrbfaqab7nm
[ holder] => stdClass Object
(
[ name] => AAAAAAAA
[ surname] => BBBBB
)
[ hotel] => stdClass Object
(
[ checkOut] => 2019- 10- 19
[ checkIn] => 2019- 10- 18
[ code] => 65983
[ name] => Amic Colon
[ categoryCode] => 3EST
[ categoryName] => 3 STARS
[ destinationCode] => PMI
[ destinationName] => Majorca
[ zoneCode] => 10
[ zoneName] => Palma
[ latitude] => 39. 5805941617829
[ longitude] => 2. 65222460031509
(
[ 0] => stdClass Object
(
[ status] => CANCELLED
[ id] => 1
[ code] => DBT. ST
[ name] => Double or Twin STANDARD
(
[ 0] => stdClass Object
(
[ roomId] => 1
[ type] => AD
[ name] => cccccc
[ surname] => dddddddd
)
[ 1] => stdClass Object
(
[ roomId] => 1
[ type] => AD
[ name] => aaaaaaaa
[ surname] => bbbbb
)
)
(
[ 0] => stdClass Object
(
[ rateClass] => NOR
[ net] => 0. 00
[ sellingRate] => 89. 00
[ hotelMandatory] => 1
[ rateComments] => Car park NO.
[ paymentType] => AT_WEB
[ packaging] =>
[ boardCode] => RO
[ boardName] => ROOM ONLY
[ cancellationPolicies
] => Array (
[ 0 ] => stdClass Object
(
[ amount] => 83. 60
[ from] => 2019 - 10 - 16T23: 59 : 00+ 02: 00
)
)
[ rooms] => 1
[ adults] => 2
[ children] => 0
)
)
)
)
[ totalSellingRate] => 0
[ totalNet] => 0. 00
[ currency] => EUR
[ supplier] => stdClass Object
(
[ name] => HOTELBEDS SPAIN, S. L. U.
[ vatNumber] => ESB28916765
)
[ cancellationAmount] => 0
)
[ invoiceCompany] => stdClass Object
(
[ code] => E14
[ company] => HOTELBEDS S. L. U.
[ registrationNumber] => ESB57218372
)
[ totalSellingRate] => 0
[ totalNet] => 0
[ pendingAmount] => 0
[ currency] => EUR
)
)
Удачи!(Отредактировано автором: 05 Октября, 2019 - 06:31:55)
Vladimir Kheifets
Отправлено: 05 Октября, 2019 - 15:28:04
Частый посетитель
Покинул форум
Сообщений всего: 879
Дата рег-ции: Март 2017
Откуда: Германия, Бавария
Помог: 37 раз(а)
mstdmstd пишет: Всем привет
Получаю массив данных (20 элементов около 50 полей каждый )курлом
Нужно сделать демо-версию этих данных и завернуть эти данные в php-массив
Вручную это довольно долго ...
Вроде в есть спец функция для этого ?
Спасибо!
Добрый день!
Начнём с того, курлом(cURL) Вы не можете получить массив данных.
Если всё проходит успешно, то $result = curl_exec($ch) возврашает строку.
Вероятно, Вы через cURL отправляете запрос API и получаете ответ.
Для начала, нужно разобраться с тем, в каком формате данные, затем определить
какую функцию или класс PHP использовать для преобразования строки в объект.
Если формат данных JSON , то нужна функция json_decode ,
ecли XML , то есть несколько, например, simplexml_load_String .
Объект, который Вы показали, видимо, результат функции json_decode .
Вам необходимо преобразовать этот объект в массив.
Допустим, что создан такой объект:
Спойлер (Отобразить ) PHP:
скопировать код в буфер обмена
<?
$Obj =
[
0 => ( object)
[
"documentId" => "8lnAjG0B8Afq4kl6-fGi" ,
"verified" => "" ,
"commentsCount" => 433
] ,
1 => ( object)
[
"documentId" => "8ldadafd1fq4kl6-fGi" ,
"verified" => "1" ,
"commentsCount" => 4013
] ,
] ;
?>
Вам посоветовали воспользоваться функцией var_export
Получается такой результ:Спойлер (Отобразить ) PHP:
скопировать код в буфер обмена
0 =>
'documentId' => '8lnAjG0B8Afq4kl6-fGi' ,
'verified' => '' ,
'commentsCount' => 433,
) ,
1 =>
'documentId' => '8ldadafd1fq4kl6-fGi' ,
'verified' => '1' ,
'commentsCount' => 4013 ,
) ,
)
Попробуйте сделать так:Спойлер (Отобразить ) PHP:
скопировать код в буфер обмена
<?
//-------------------------------
echo "<hr><b>Object \$ Obj:</b><br>" ;
print_a( $Obj ) ;
//-------------------------------
$outArr = [ ] ;
echo "<hr><b>\$ Obj to \$ outArr with foreach:</b><br>" ;
foreach ( $Obj as $i => $obj ) foreach ( $obj as $name => $value ) $outArr [ $i ] [ $name ] = $value ;
print_a( $outArr ) ;
//----------------------------------
echo "<hr><b>object_to_array(\$ Obj):</b><br>" ;
$outArr = object_to_array( $Obj ) ;
print_a( $outArr ) ;
//----------------------------------
echo "<hr><b>var_export(\$ Obj):</b><br>" ;
print "<pre>" ; var_export( $Obj ) ; print "</pre>" ;
echo "<hr>" ;
#######################################
function object_to_array( $data )
{
{
foreach ( $data as $key => $value )
{
$result [ $key ] = object_to_array( $value ) ;
}
return $result ;
}
return $data ;
}
//----------------------------------
function print_a( $a ) {
print "<pre>" ;
print "</pre>" ;
}
//-----------------------------------
?>
Результы здесь:
Спойлер (Отобразить ) PHP:
скопировать код в буфер обмена
Object $Obj :
(
[ 0] => stdClass Object
(
[ documentId] => 8lnAjG0B8Afq4kl6- fGi
[ verified] =>
[ commentsCount] => 433
)
[ 1] => stdClass Object
(
[ documentId] => 8ldadafd1fq4kl6- fGi
[ verified] => 1
[ commentsCount] => 4013
)
)
----------------------------------------
$Obj to $outArr with foreach :
(
(
[ documentId] => 8lnAjG0B8Afq4kl6- fGi
[ verified] =>
[ commentsCount] => 433
)
(
[ documentId] => 8ldadafd1fq4kl6- fGi
[ verified] => 1
[ commentsCount] => 4013
)
)
----------------------------------------
object_to_array( $Obj ) :
(
(
[ documentId] => 8lnAjG0B8Afq4kl6- fGi
[ verified] =>
[ commentsCount] => 433
)
(
[ documentId] => 8ldadafd1fq4kl6- fGi
[ verified] => 1
[ commentsCount] => 4013
)
)
Удачи!(Отредактировано автором: 05 Октября, 2019 - 15:29:52)
LIME
Отправлено: 05 Октября, 2019 - 16:39:28
Активный участник
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
Помог: 322 раз(а)
Vladimir Kheifets пишет: Допустим, что создан такой объект:
Vladimir Kheifets пишет: Результы здесь:
а теперь наоборот и получится ответ на вопрос как его видит тс
Поиск в теме | Версия для печати
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
Powered by ExBB FM 1.0 RC1. InvisionExBB