2016-10-27 6 views
0

Ich bin mit diesem Problem stecken, ich bin die Funktion, die ich erstelle erhält zwei Parameter, $ codeList, $ priceList beide dann benötigt, um ein XML zu senden und für jeder Code und Preis einen weiteren Knoten zu dem XML hinzugefügt werden muss, ist dies der Code ich bin jetzt mit, ich habe ProblemeArrays PHP, speichern Sie Werte in Schlüssel und dann abrufen

$feed = ' 
<?xml version="1.0" encoding="utf-8" ?> 
    <AmazonEnvelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="amzn-envelope.xsd"> 
<Header> 
    <DocumentVersion>1.01</DocumentVersion> 
    <MerchantIdentifier>XXXXXXX</MerchantIdentifier> 
</Header> 
    <MessageType>Price</MessageType>'; 

ich schaffe zwei Arrays und Beispiel zu machen:

$SKU = array('ASUSVNA1','esx','rer','ASUSasVNA1','itemsdasd','item 24'); 
$price = array(2,3,4,5,6,7); 

dann mache ich das:

$i = 0; 
foreach ($price as $price) { 

foreach ($SKU as $SKU) { 
    $i++; 
    $feed .=' 
    <Message> 
    <MessageID>'.$i.'</MessageID> 
    <Price> 
     <SKU>'.$SKU.'</SKU> 
     <StandardPrice currency="USD">'.$price.'</StandardPrice> 
     </Price> 
    </Message>'; 
} 



} 


    $feed .= ' 
</AmazonEnvelope>'; 

Funktioniert, um das XML zu erstellen, aber in der Ausgabe wird diese Nachricht gesendet: Warnung: Ungültiges Argument für foreach() angegeben.

Antwort

2

für Array mit anderen Namen versuchen und VARs

$i = 0; 
    foreach ($price as $my_price) { 

    foreach ($SKU as $my_SKU) { 
     $i++; 
     $feed .=' 
     <Message> 
     <MessageID>'.$i.'</MessageID> 
     <Price> 
      <SKU>'.$my_SKU.'</SKU> 
      <StandardPrice currency="USD">'.$my_price.'</StandardPrice> 
      </Price> 
     </Message>'; 
    } 
    } 
+0

Sehr genau jetzt das Problem ist, dass er 6 * 6 Mal den Knoten druckt, scheint wie mein Ansatz ist schlecht, muss einen anderen Weg finden. –

+0

@AlejandroTorres sollten Sie sich anschauen, wie Sie eine einzelne foreach auf dem Array betreiben .. machen Sie eine Suche nach diesem .. – scaisEdge

0

Sie überschreiben Ihre Variablen in foreach. Sie sollten $ Preis auf $ Preise, $ SKU $ SKUs ändern und dann wie folgt verwenden:

$SKUs = array('ASUSVNA1','esx','rer','ASUSasVNA1','itemsdasd','item 24'); 
$prices = array(2,3,4,5,6,7); 
foreach ($prices as $price) { 
    foreach ($SKUs as $SKU) { 
     //the rest of code 
    } 
} 
0

nicht sicher, ob dies ist, warum es funktioniert nicht, aber in einer foreach-Anweisung würde ich niemals $ var als $ var verwenden. Ich würde immer $ vars als $ var oder so machen. Nicht sicher, ob sie aufeinander treten oder nicht, aber das mag sein, was passiert.

0

Die Antworten wir sind alle richtig es ein Fehler von meiner Seite war jedoch ein Problem kam den Code auf diese Weise zu tun, weil es den Druck 6 * 6-mal die Knoten ich einen anderen Weg, dies zu lösen gefunden:

$SKU = array('ASUSVNA1','esx','rer','ASUSasVNA1','itemsdasd','item 24'); 
$price = array(2,3,4,5,6,7); 

diese Variable Erstellt

$result_array = [ 
    'sku' => '', 
    'price' => '' 
]; 

speichern der SKU sowohl Array speichern hier

foreach ($SKU as $SKU) { 
    $result_array['sku'][] = $SKU; 
} 

Speichern der Preis

foreach ($price as $price) { 
    $result_array['price'][] = $price; 
} 

nun eine foreach über den Index 'sku' erstellen, wie $ index => $ value, wird $ Index erlauben Sie mir in diesem Array jeden Datensatz zu zählen (es gibt 6 in diesem Fall auf beide Also für dieses Beispiel ist gut), jetzt kommen die Tricks in den Knoten:

StandardPrice currency = "USD"> '. $ result_array [' Preis '] [$ index].'

der [$ index] ermöglicht es mir, all den Index in meinem result_array [ 'Preis'] Index für alle

$i = 0; 

foreach ($result_array['sku'] as $index => $value) { 

    $i++; 
    $feed .=' 
    <Message> 
    <MessageID>'.$i.'</MessageID> 
    <Price> 
     <SKU>'.$value.'</SKU> 
     <StandardPrice currency="USD">'.$result_array['price'][$index].'</StandardPrice> 
     </Price> 
    </Message>'; 

} 

$feed .= ' 
</AmazonEnvelope>'; 

Problem gelöst, danke zu reisen.

Verwandte Themen