【发布时间】:2016-08-10 10:29:29
【问题描述】:
object(stdClass)#2 (1) { ["GetExchangeRatesResult"]=> string(6183) " 149 2016-08-10T00:00:00+02:00 978 EUR ЕМУ 1 61.1876 61.4951 61.8026 EMU евро Euro 2016-08-09T00:00:00+02:00 149 2016-08-10T00:00:00+02:00 840 USD С А Д 1 55.2335 55.511 55.7886 USA САД долар US dollar 2016-08-09T00:00:00+02:00 149 2016-08-10T00:00:00+02:00 826 GBP В.Британија 1 71.6483 72.0083 72.3684 U.K. британска фунта British pound 2016-08-09T00:00:00+02:00 149 2016-08-10T00:00:00+02:00 756 CHF Швајцарија 1 56.1406 56.4227 56.7048 Switzerland швајцарски франк Swiss franc 2016-08-09T00:00:00+02:00 149 2016-08-10T00:00:00+02:00 752 SEK Шведска 1 6.4493 6.4817 6.5141 Sweden шведска круна Swedish krona 2016-08-09T00:00:00+02:00 149 2016-08-10T00:00:00+02:00 578 NOK Норвешка 1 6.5392 6.5721 6.605 Norway норвешка круна Norwegian krone 2016-08-09T00:00:00+02:00 149 2016-08-10T00:00:00+02:00 392 JPY Јапонија 1 0.5402 0.5429 0.5456 Japan јапонски јен Japanese yen 2016-08-09T00:00:00+02:00 149 2016-08-10T00:00:00+02:00 208 DKK Данска 1 8.2278 8.2691 8.3105 Denmark данска круна Danish krone 2016-08-09T00:00:00+02:00 149 2016-08-10T00:00:00+02:00 124 CAD Канада 1 42.0043 42.2153 42.4264 Canada канадски долар Canadian dollar 2016-08-09T00:00:00+02:00 149 2016-08-10T00:00:00+02:00 36 AUD Австралија 1 42.3063 42.5189 42.7315 Australia австралиски долар Australian dollar 2016-08-09T00:00:00+02:00 " }
我从我的 SOAP 请求中得到了上面的响应。但我无法将其解析为数组或至少 Json。
这是我尝试过的:
$xml = preg_replace(“/(<\/?)(\w+):([^>]*>)/”, “$1$2$3”, $xml);
$xml = simplexml_load_string($xml);
$json = json_encode($xml);
$responseArray = json_decode($json,true);
使用时:
function simpleXmlElement2array($xmlObject, $out = array()) {
foreach ((array)$xmlObject as $index => $node) {
$out[$index] = (is_object($node) || is_array($node)) ? self::SimpleXmlElement2array($node) : $node;
}
return $out;
}
我明白了:
Array
(
[GetExchangeRatesResult] =>
149
2016-08-10T00:00:00+02:00
978
EUR
ЕМУ
1
61.1876
61.4951
61.8026
EMU
евро
Euro
2016-08-09T00:00:00+02:00
149
2016-08-10T00:00:00+02:00
840
USD
С А Д
1
55.2335
55.511
55.7886
USA
САД долар
US dollar
2016-08-09T00:00:00+02:00
149
2016-08-10T00:00:00+02:00
826
GBP
В.Британија
1
71.6483
72.0083
72.3684
U.K.
британска фунта
British pound
2016-08-09T00:00:00+02:00
149
2016-08-10T00:00:00+02:00
756
CHF
Швајцарија
1
56.1406
56.4227
56.7048
Switzerland
швајцарски франк
Swiss franc
2016-08-09T00:00:00+02:00
149
2016-08-10T00:00:00+02:00
752
SEK
Шведска
1
6.4493
6.4817
6.5141
Sweden
шведска круна
Swedish krona
2016-08-09T00:00:00+02:00
149
2016-08-10T00:00:00+02:00
578
NOK
Норвешка
1
6.5392
6.5721
6.605
Norway
норвешка круна
Norwegian krone
2016-08-09T00:00:00+02:00
149
2016-08-10T00:00:00+02:00
392
JPY
Јапонија
1
0.5402
0.5429
0.5456
Japan
јапонски јен
Japanese yen
2016-08-09T00:00:00+02:00
149
2016-08-10T00:00:00+02:00
208
DKK
Данска
1
8.2278
8.2691
8.3105
Denmark
данска круна
Danish krone
2016-08-09T00:00:00+02:00
149
2016-08-10T00:00:00+02:00
124
CAD
Канада
1
42.0043
42.2153
42.4264
Canada
канадски долар
Canadian dollar
2016-08-09T00:00:00+02:00
149
2016-08-10T00:00:00+02:00
36
AUD
Австралија
1
42.3063
42.5189
42.7315
Australia
австралиски долар
Australian dollar
2016-08-09T00:00:00+02:00
)
我至少希望能够像$arr['12']那样单独获取每个项目
【问题讨论】:
-
我在考虑使用 explode() 创建数组(使用空格),从那里开始,这是一个肮脏的解决方案,但它可以完成工作。
-
我试过了...首先使用了
implode(),然后我使用了explode(),但并没有真正做到。 -
首先你分解soap响应然后用那个数组创建一个新的第一个索引,然后转换为xml
-
那么在你做 xml_load_string 之前的 $xml 是什么,你想要的最终结果是什么
-
@sietse85 我没有爆炸
$array = (array) $xml;$xml只是肥皂响应——在我的问题中显示为var_dump。