Was in meinen Augen einwandfrei die Ausgabe erzeugen sollte, die du dir wünscht und es auch wird, sofern die Variable $daten nicht noch vor der gewünschten aussage verändert wird. Im Zweifelsfall hilft ein schlichtes var_dump vor der gewünschten Ausgabe weiter.
fast.. das array wieder rum war verschachtelt. Hab ich net gesehen.
$daten=array(array("artikel"=>"ITEM","preis"=>"ITEM","id"=>"ITEM","menge"=>"ITEM"));