我们试图将一个固定值添加到数组的末尾,我们目前的代码是:
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>
最佳答案
当您应该添加一个那里有新词典。
您还需要为这个新项目定义一个键并添加它。
$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 的值取决于您的应用。
关于php - 将固定的 xml 添加到 php foreach 的末尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30399152/
当我使用Bundler时,是否需要在我的Gemfile中将其列为依赖项?毕竟,我的代码中有些地方需要它。例如,当我进行Bundler设置时:require"bundler/setup" 最佳答案 没有。您可以尝试,但首先您必须用鞋带将自己抬离地面。 关于ruby-我需要将Bundler本身添加到Gemfile中吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/4758609/
我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚
我有一个对象has_many应呈现为xml的子对象。这不是问题。我的问题是我创建了一个Hash包含此数据,就像解析器需要它一样。但是rails自动将整个文件包含在.........我需要摆脱type="array"和我该如何处理?我没有在文档中找到任何内容。 最佳答案 我遇到了同样的问题;这是我的XML:我在用这个:entries.to_xml将散列数据转换为XML,但这会将条目的数据包装到中所以我修改了:entries.to_xml(root:"Contacts")但这仍然将转换后的XML包装在“联系人”中,将我的XML代码修改为
我有一个ModularSinatra应用程序,我正在尝试将Bootstrap添加到应用程序中。get'/bootstrap/application.css'doless:"bootstrap/bootstrap"end我在views/bootstrap中有所有less文件,包括bootstrap.less。我收到这个错误:Less::ParseErrorat/bootstrap/application.css'reset.less'wasn'tfound.Bootstrap.less的第一行是://CSSReset@import"reset.less";我尝试了所有不同的路径格式,但它
我使用的是Firefox版本36.0.1和Selenium-Webdrivergem版本2.45.0。我能够创建Firefox实例,但无法使用脚本继续进行进一步的操作无法在60秒内获得稳定的Firefox连接(127.0.0.1:7055)错误。有人能帮帮我吗? 最佳答案 我遇到了同样的问题。降级到firefoxv33后一切正常。您可以找到旧版本here 关于ruby-无法在60秒内获得稳定的Firefox连接(127.0.0.1:7055),我们在StackOverflow上找到一个类
当谈到运行时自省(introspection)和动态代码生成时,我认为ruby没有任何竞争对手,可能除了一些lisp方言。前几天,我正在做一些代码练习来探索ruby的动态功能,我开始想知道如何向现有对象添加方法。以下是我能想到的3种方法:obj=Object.new#addamethoddirectlydefobj.new_method...end#addamethodindirectlywiththesingletonclassclass这只是冰山一角,因为我还没有探索instance_eval、module_eval和define_method的各种组合。是否有在线/离线资
有没有一种简单的方法可以将给定的整数格式化为具有固定长度和前导零的字符串?#convertnumberstostringsoffixedlength3[1,12,123,1234].map{|e|???}=>["001","012","123","234"]我找到了解决方案,但也许还有更聪明的方法。format('%03d',e)[-3..-1] 最佳答案 如何使用%1000而不是进行字符串操作来获取最后三位数字?[1,12,123,1234].map{|e|format('%03d',e%1000)}更新:根据theTinMan的
假设我有一个这样的单例类:classSettingsincludeSingletondeftimeout#lazy-loadtimeoutfromconfigfile,orwhateverendend现在,如果我想知道使用什么超时,我需要编写如下内容:Settings.instance.timeout但我宁愿将其缩短为Settings.timeout使这项工作有效的一个明显方法是将设置的实现修改为:classSettingsincludeSingletondefself.timeoutinstance.timeoutenddeftimeout#lazy-loadtimeoutfromc
是否可以为单个ActiveRecord实例添加回调?作为进一步的限制,这是继续使用库,所以我无法控制该类(除了对其进行猴子修补)。这或多或少是我想做的:defdo_something_creazymessage=Message.newmessage.on_save_call:do_even_more_crazy_stuffenddefdo_even_more_crazy_stuff(message)puts"Message#{message}hasbeensaved!Hallelujah!"end 最佳答案 你可以通过在创建对象后立
我确定这是一个相对简单的问题,并且必须有一个很好的明智的Rails方法来做这件事,但我不确定它是什么。基本上我是将书籍添加到数据库中,并且我想将作者存储在一个单独的表中。所以我有一个名为authors的表,由表books引用。我想创建一个用于添加书籍的Rails表单,我希望它只是作者、标题、出版商等的简单表单,如果它发现作者已经在作者表中,那么它应该只是引用该记录,如果它不在作者表中,那么它应该添加一个新记录并引用它。我确信在Rails中有一种简单的方法可以做到这一点-但我似乎找不到它。干杯,罗宾 最佳答案 假设您的表单传递auth