2015-04-15 2 views
0

Я все время получаю неправильный вывод, как всегда получаю последнюю сумму за каждый кошелек, любой может помочь? большое спасибо.Вложенный foreach комбайт php

выхода
foreach ($xml->NewDataSet->WalletData as $PGW) { 
    printf("%s\t%s\n", $PGW->walletID, $PGW->Walletamount); 
} 

это Еогеасп является:

walletID Walletamount 
1   100 
4   40 

второго Еогеасп, как удар:

foreach ($xml2->NewDataSet->Provider as $provide) { 
    if ($provide->WalletType == 'Black Wallet') { 
     printf("%s\t%s\t%s\n", " ", $provide->WalletID, $provide->WalletName)); 
    } 
} 

выход:

amount WalletID WalletName 
     1   A 
     2   B 
     3   C 
     4   D 
     5   E 
     6   F 

Как объединить два Еогеаспа и вывод, как это.

amount walletname 
100.0 A 
    0.0 B 
    0.0 C 
40.0 D 
    0.0 E 
    0.0 F 

ответ

1

я хотел бы построить массив:

$wallets = array(); 

foreach ($xml2->NewDataSet->Provider as $provide) { 
    if ($provide->WalletType == 'Black Wallet') { 
     $wallets[$provide->WalletID] = array('name' => $provide->WalletName, 'amount' => 0); 
    } 
} 

foreach ($xml->NewDataSet->WalletData as $PGW) { 
    $wallets[$PGW->walletID]['amount'] = $PGW->Walletamount; 
} 

for($i=0;$i<count($wallets);$i++){ 
    printf("%s\t%s\n", $wallets[$i]['amount'], $wallets[$i]['name']); 
} 
+0

это работает. за исключением ошибки как «тип нелегального смещения в $ кошельках [$ provision-> WalletID]», но я исправлю это ... большое спасибо ... –

+0

Могу привести его в INT. Что вы сделали, чтобы исправить это? – Twisty

+0

Я установил его с помощью strval() как этот «$ wallets [strval ($ provision-> WalletID)]». –

0

Быстрый ответ:

foreach ($xml2->NewDataSet->Provider as $provide) { 
    if ($provide->WalletType == 'Black Wallet') { 
     if (isset($xml->NewDataSet->WalletData[$provide->WalletID])) { 
      printf("%s\t%s\t%s\n", $xml->NewDataSet->WalletData[$provide->WalletID]->Walletamount, $provide->WalletID, $provide->WalletName)); 
     } else { 
      printf("%s\t%s\t%s\n", 0, $provide->WalletID, $provide->WalletName)); 
     } 
    } 
} 

Но я понятия не имею, что ваши переменные $xml и $xml2 есть.

+0

$ result = $ soapClient -> GetWallet ($ params); $ xml = new SimpleXMLElement ($ result-> dsResult-> any); $ result2 = $ soapClient -> GetProvider ($ params); $ xml2 = новый SimpleXMLElement ($ result2-> dsResult-> any); –

0

Я еще не начал, потому что вы не обеспечивают Arays в нормальной форме, но он должен работать

<?php 
$array1=Array(); 
foreach ($xml->NewDataSet->WalletData as $PGW) { 
    $array1[$PGW->walletID]=$PGW->Walletamount; 
} 
foreach ($xml2->NewDataSet->Provider as $provide) { 
    if ($provide->WalletType == 'Black Wallet') { 
     if(isset($array1[$provide->WalletID])) 
      $data=$array1[$provide->WalletID]; 
     else 
      $data=0; 
     echo sprintf("%s\t%.1F\n", " ", $data, $provide->WalletName); 
    } 
} 
?> 
+0

Он работает, за исключением ошибки, как «тип нелегального смещения в $ кошельках [$ PGW-> WalletID]», но я исправлю это ... большое спасибо –

Смежные вопросы