Auslesen von Artikel-Daten aus sBasket von sOrderVariables – richtig so?

Hallo Zusammen,

ich verwende den folgenden Code, um Artikel-Daten aus sBasket von sOrderVariables auszulesen. Mit den Daten konstruiere ich ein Teil meiner XML-Anfrage an einen Server:

// irgendwann früher
$sessionNamespace = $this->container->get('session');
$orderVariables = $sessionNamespace->get('sOrderVariables')->getArrayCopy();

// dann später
for($i = 0; $i <= $orderVariables['sBasket']['Quantity'] - 1; $i++){

            $xml .= "
                 
                    " . $orderVariables['sBasket']['content'][$i]['ob_attr1'] . "
                    " . $orderVariables['sBasket']['content'][$i]['quantity'] . "
                     
                    " . $orderVariables['sBasket']['content'][$i]['ob_attr2'] . "
                ";

        }

Wie ihr sieht, $i bezeichnet hier in der Schleife die Nummer des Artikels im Warenkorb. Der letzte Artikel im $orderVariables[‘sBasket’][‘content’] ist aber (ANSCHEINEND) kein Artikel, sondern Informationen über Preiskorrekturen (Nachlässe usw.), “Warenkorbrabett” in meinem Test-Fall. Ich bin fast 100% sicher, dass es in $orderVariables[‘sBasket’][‘content’] mehrere Einträge sein können, die keine richtigen Artikeln sind. Deshalb bräuchte ich einen Merkmal, an dem ich die richtigen Artikeln von weiteren Entitäten unterscheiden könnte. Soweit verwende ich $orderVariables[‘sBasket’][‘Quantity’], um nur so viel Einträge aus $orderVariables[‘sBasket’][‘content’] durchzugehen, wie es richtigen Artikeln im Warenkob gibt. Aber ich weiß nicht, ob es Garantie gibt, dass die “unechte” Artikeln immer am Ende verknüpft werden und nicht irgenwo am Anfang oder in der Mitte (was auch weniger wahrscheinlich ist).

 Deshalb überlege ich, wie noch könnte ich Artikeln von Preiskorrekturen unterscheden. Zur Frage kommen soweit entweder $orderVariables[‘sBasket’][‘content’][$i][‘articleID’], oder $orderVariables[‘sBasket’][‘content’][$i][‘ordernummer’]. Das erste ist beim Warenkorbrabatt gleich 0, was, denke ich, bei keinem richtigen Artikel so sein wird. Wenn das so bei allen “unechten” Artikeln hier wäre, könnte ich das benutzen. Das Zweite ist in diesem Fall gleich “SHIPPINGDISCOUNT”. Darauf basiert, kann ich vermuten, dass es irgendwo eine Liste von Werten für diesen Dateneintrag gibt, die Positionen bezeichnen würden, die keine richtigen Artikeln sind. Die Liste zu verwenden wäre aber weniger sicher, als wenn $orderVariables[‘sBasket’][‘content’][$i][‘articleID’] == 0 in der Tat “keinen richtigen Artikel” bedeuten würde.

Daher möchte ich euch Fragen, ob meine Annahmen tatsächlich richtig sind, ob ich richtig mit der jetztigen Lösung bin und wenn nicht, wie kann ich am besten die Artikelndaten nur von den wirklichen Artikeln an dieser Stelle bekommen.

Danke.