【发布时间】:2014-09-27 14:05:20
【问题描述】:
我似乎无法在网上找到答案,但我认为这是因为我不太确定要搜索什么,因为我对 xml 和 json 非常陌生。
如果我有这个 xml
$postData = '<PaymentNotification Stage="false">
<MerchantReference>100004117</MerchantReference>
<TransactionType>PAYMENT</TransactionType>
<TransactionState>SUCCESSFUL</TransactionState>
<ResultCode>00</ResultCode>
<ResultMessage>Successful</ResultMessage>
<PayUReference>1167986976014</PayUReference>
<Basket>
<Description>Store Order Number:100004117</Description>
<AmountInCents>100</AmountInCents>
<CurrencyCode>ZAR</CurrencyCode>
<Products/>
</Basket>
<PaymentMethodsUsed>
<Eft BankName="ABSA" AmountInCents="100" Reference="CUMVSIUPFG" AccountNumber="4077920871" BranchNumber="632005" AccountType="Cheque" TimeLimit="168" Currency="ZAR"/>
</PaymentMethodsUsed>
<IpnExtraInfo>
<ResponseHash></ResponseHash>
</IpnExtraInfo>
</PaymentNotification>';
然后json解码
$returnData = json_decode(json_encode(simplexml_load_string($postData)),true);
我可以检索对象,例如。
$cost_amount = $returnData['Basket']['AmountInCents'];
但是我如何获得 Eft 中的属性,例如。银行名称?
我试过这些都没有成功
$paid_amount = $returnData['PaymentMethodsUsed']['CreditCard']['@AmountInCents'];
and
$paid_amount = $returnData[0]->PaymentMethodsUsed[0]->CreditCard->AmountInCents;
【问题讨论】:
-
这就是为什么有时这种方法不能削减它,它不是一个完美的方法,因为它不能完美地保存数据,你只需要以正常的方式遍历它
-
它也不是那么糟糕 - 除了现场的许多重复 - 首先在 PHP 手册中阅读它:Basic SimpleXML usage