我们试图在数组的末尾添加一个固定值,我们目前拥有的代码是:
foreach ($items as $k => $value)
{
$xml['Contact']['Document']['Item'][$k]['Partcode'] = $value['sku'];
$modifiers = '';
if($modifiers_arr = json_decode($value['modifiers']))
{
foreach ($modifiers_arr as $mod_key => $mod_val)
{
$modifiers .= "{$mod_val->modifier_name} {$mod_val->modifier_value} ";
if(@$mod_val->price_mod)
{
$modifiers .= "{$mod_val->price_mod} ";
}
}
}
$xml['Contact']['Document']['Item'][$k]['Description'] = "{$value['title']} {$modifiers}";
$xml['Contact']['Document']['Item'][$k]['Quantity'] = "{$value['item_qty']}";
$xml['Contact']['Document']['Item'][$k]['UnitPrice'] = "{$value['price']}";
$xml['Contact']['Document']['Item'][$k]['UnitTax'] = round($value['item_tax'] / $value['item_qty'],2);
$xml['Contact']['Document']['Item'][$k]['UnitNetPrice'] = $value['price'] - round(($value['item_tax'] / $value['item_qty']),2);
}
输出: <Item>
<Partcode>GRF72</Partcode>
<Description>Odour Eliminator </Description>
<Quantity>1</Quantity>
<UnitPrice>4.99</UnitPrice>
<UnitTax>0.83</UnitTax>
<UnitNetPrice>4.16</UnitNetPrice>
</Item>
然而,我们想在这之后添加一个固定值(可以有无限数量的项目从数组返回),所以它最终看起来像:
<Item>
<Partcode>GRF72</Partcode>
<Description>Product title</Description>
<Quantity>1</Quantity>
<UnitPrice>4.99</UnitPrice>
<UnitTax>0.83</UnitTax>
<UnitNetPrice>4.16</UnitNetPrice>
</Item>
<Item>
<Partcode>CAR01</Partcode>
<Description>Delivery</Description>
<Quantity>1</Quantity>
<UnitPrice>4.99</UnitPrice>
<UnitTax>0</UnitTax>
<UnitNetPrice>4.99</UnitNetPrice>
</Item>
我试过在数组之后添加这段代码,但它没有正确格式化,有什么想法吗?
$xml['Contact']['Document']['Item']['Partcode'] = "CAR01";
$xml['Contact']['Document']['Item']['Description'] = "Shipping";
$xml['Contact']['Document']['Item']['Quantity'] = "1";
$xml['Contact']['Document']['Item']['UnitPrice'] = $order_data['order_shipping'];
$xml['Contact']['Document']['Item']['UnitTax'] = "0";
$xml['Contact']['Document']['Item']['UnitNetPrice'] = $order_data['order_shipping'];
简单输出为:
<Item>
<Partcode>GRF72</Partcode>
<Description>Odour Eliminator </Description>
<Quantity>1</Quantity>
<UnitPrice>4.99</UnitPrice>
<UnitTax>0.83</UnitTax>
<UnitNetPrice>4.16</UnitNetPrice>
</Item>
<Item>CAR01</Item>
<Item>Shipping</Item>
<Item>1</Item>
<Item>0.00</Item>
<Item>0</Item>
<Item>0.00</Item>
当您应该在那里添加新字典时,您目前只向$xml['Contact']['Document']['Item']
字典添加新的键值对。
您还需要为这个新项定义一个键并添加。
$somekey = "somevalue";
$xml['Contact']['Document']['Item'][$somekey]['Partcode'] = "CAR01";
$xml['Contact']['Document']['Item'][$somekey]['Description'] = "Shipping";
$xml['Contact']['Document']['Item'][$somekey]['Quantity'] = "1";
$xml['Contact']['Document']['Item'][$somekey]['UnitPrice'] = $order_data['order_shipping'];
$xml['Contact']['Document']['Item'][$somekey]['UnitTax'] = "0";
$xml['Contact']['Document']['Item'][$somekey]['UnitNetPrice'] = $order_data['order_shipping'];
$somekey
的值取决于您的应用程序
您没有为固定值添加构建相同的结构:
$xml['Contact']['Document']['Item'][$k]['Description'] = "{$value['title']} {$modifiers}";
$xml['Contact']['Document']['Item'] ['Partcode'] = "CAR01";
^^^^^---missing index
第一行['Item']
是数组的数组,即[$k]
部分。你没有在固定添加中做子索引,这意味着你将文本从其他所有内容中"向上"添加一级。
基本上就是生成
$xml = array(
'Contact' => array(
'Document' => array(
'Item' => array
0 => array(
'Description' => ... the stuff from your loop
etc...
),
'Partcode' => array
etc... fixed part here
)
)
)
)
)