Foreach XML If循环只返回第一个节点


Foreach XML If Loop Only Returning First Nodes

我正试图获得每个MerchantFulfillmentIDSKU 's,其中具有MFN的值。

这是我的xml:

$xml = '<?xml version="1.0" encoding="UTF-8"?>
<Message>
<SettlementReport>
    <Refund>
        <Fulfillment>
            <MerchantFulfillmentID>MFN</MerchantFulfillmentID>
            <AdjustedItem>
                <SKU>1MFNSKU1</SKU>
            </AdjustedItem>
        </Fulfillment>
    </Refund>
    <Refund>
        <Fulfillment>  
            <MerchantFulfillmentID>AFN</MerchantFulfillmentID>
            <AdjustedItem>
                <SKU>1AFNSKU1</SKU>
            </AdjustedItem>
        </Fulfillment>
    </Refund>
            <Refund>
        <Fulfillment>
            <MerchantFulfillmentID>MFN</MerchantFulfillmentID>
            <AdjustedItem>
                <SKU>2MFNSKU2</SKU>
            </AdjustedItem>
        </Fulfillment>
    </Refund>
            <Refund>
        <Fulfillment>  
            <MerchantFulfillmentID>AFN</MerchantFulfillmentID>
            <AdjustedItem>
                <SKU>2AFNSKU2</SKU>
            </AdjustedItem>
        </Fulfillment>
    </Refund>
</SettlementReport>
</Message>';

和我的PHP

$xmlload = simplexml_load_string($xml);
foreach ($xmlload->Message->SettlementReport->Refund->Fulfillment as $ful) {
if ($ful->MerchantFulfillmentID == 'MFN') {
    echo $ful->MerchantFulfillmentID;
    echo '<br />';
    echo $ful->AdjustedItem->SKU;
}
}
我的结果是

最惠国1 mfnsku1

只获取它找到的第一个迭代的结果。

如何使MFN的每个实例都将回显SKU ?

我个人会从你的XML创建一个数组,如下所示。

$xmlToString = simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA);$xmlToArray = json_decode(json_encode((array)$xmlToString), TRUE);print_r ($ xmlToArray);之前

这将打印出;

<>之前数组([settmentreport] => Array([退款]=>数组([0] =>数组([Fulfillment] => Array([merchantfulfillmentd] => MFN[AdjustedItem] => Array([sku] => 1mfnsku1)))[1] =>数组([Fulfillment] => Array([merchantfulfillmentd] => AFN[AdjustedItem] => Array([sku] => 1afnsku1)))[2] =>数组([Fulfillment] => Array([merchantfulfillmentd] => MFN[AdjustedItem] => Array([sku] => 2mfnsku2)))[3] =>阵列([Fulfillment] => Array([merchantfulfillmentd] => AFN[AdjustedItem] => Array([sku] => 2afnsku))))))之前

然后对"$xmlToArray"执行foreach操作。

<>之前foreach($xmlToArray['SettlementReport']['Refund']作为$ full){if($ full ['Fulfillment'][' merchantfulfillment '] == 'MFN'){echo $富尔语("成就感")("MerchantFulfillmentID");echo $富尔语("成就感")("AdjustedItem")("SKU");}}之前

相关文章:将SimpleXML对象转换为数组