Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Foreach XML If循环仅返回第一个节点_Php_Xml - Fatal编程技术网

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

Php Foreach XML If循环仅返回第一个节点,php,xml,Php,Xml,我正在尝试获取每个商品履行ID中包含最惠国待遇值的SKU 以下是我的xml: $xml = '<?xml version="1.0" encoding="UTF-8"?> <Message> <SettlementReport> <Refund> <Fulfillment> <MerchantFulfillmentID>MFN</M

我正在尝试获取每个
商品履行ID
中包含
最惠国待遇
值的
SKU

以下是我的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>';
$xml='1!'
最惠国待遇
1MFNSKU1
AFN
1AFNSKU1
最惠国待遇
2MFNSKU2
AFN
2AFNSKU2
';
还有我的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;
}
}
$xmlload=simplexml\u load\u字符串($xml);
foreach($xmlload->Message->SettlementReport->退款->以$ful形式履行){
如果($ful->MerchantFulfillmentID=='MFN'){
echo$ful->MerchantFullmentId;
回声“
”; echo$ful->AdjustedItem->SKU; } }
我的结果是

最惠国待遇

1MFNSKU1


它只从它找到的第一次迭代中获取结果。如何使
MFN
的每个实例都能呼应出
SKU

我个人会根据您的XML创建一个数组,如下所示

$xmlToString = simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA); $xmlToArray = json_decode(json_encode((array)$xmlToString), TRUE); print_r($xmlToArray); $xmlToString=simplexml\u load\u字符串($xml,'simplexmlement',LIBXML\u NOCDATA); $xmlToArray=json_解码(json_编码((数组)$xmlToString),TRUE); 打印费($xmlToArray); 这将打印出来

Array ( [SettlementReport] => Array ( [Refund] => Array ( [0] => Array ( [Fulfillment] => Array ( [MerchantFulfillmentID] => MFN [AdjustedItem] => Array ( [SKU] => 1MFNSKU1 ) ) ) [1] => Array ( [Fulfillment] => Array ( [MerchantFulfillmentID] => AFN [AdjustedItem] => Array ( [SKU] => 1AFNSKU1 ) ) ) [2] => Array ( [Fulfillment] => Array ( [MerchantFulfillmentID] => MFN [AdjustedItem] => Array ( [SKU] => 2MFNSKU2 ) ) ) [3] => Array ( [Fulfillment] => Array ( [MerchantFulfillmentID] => AFN [AdjustedItem] => Array ( [SKU] => 2AFNSKU2 ) ) ) ) ) ) 排列 ( [SettlementReport]=>阵列 ( [退款]=>阵列 ( [0]=>阵列 ( [Fulfillment]=>数组 ( [MerchantFulfillmentID]=>最惠国待遇 [AdjustedItem]=>阵列 ( [SKU]=>1MFNSKU1 ) ) ) [1] =>阵列 ( [Fulfillment]=>数组 ( [MerchantFulfillmentID]=>AFN [AdjustedItem]=>阵列 ( [SKU]=>1AFNSKU1 ) ) ) [2] =>阵列 ( [Fulfillment]=>数组 ( [MerchantFulfillmentID]=>最惠国待遇 [AdjustedItem]=>阵列 ( [SKU]=>2MFNSKU2 ) ) ) [3] =>阵列 ( [Fulfillment]=>数组 ( [MerchantFulfillmentID]=>AFN [AdjustedItem]=>阵列 ( [SKU]=>2AFNSKU2 ) ) ) ) ) ) 然后在“$xmlToArray”上执行foreach

foreach($xmlToArray['SettlementReport']['return']作为$ful) { 如果($ful['Fulfillment']['MerchantFulfillmentID']=='MFN') { echo$ful['Fulfillment']['MerchantFulfillmentID']; echo$ful['Fulfillment']['AdjustedItem']['SKU']; } }
相关文章:

我还在答案中添加了foreach示例;)我感谢你的帮助!数组确实使其更易于使用。我正在本地主机上工作,必须添加
['Message']
使其成为每个($xmlToArray['Message']['SettlementReport']['return']作为$ful)的
未定义索引:SettlementReport
——但它工作得很好!再次感谢你。 foreach($xmlToArray['SettlementReport']['Refund'] as $ful) { if( $ful['Fulfillment']['MerchantFulfillmentID'] == 'MFN') { echo $ful['Fulfillment']['MerchantFulfillmentID']; echo $ful['Fulfillment']['AdjustedItem']['SKU']; } }