使用数组拼接来交换数组的最后一个值?



我有一个看起来像这样的数组:

Array ( [0] => Credit Card Type [1] => MasterCard )
Array ( [0] => Credit Card Number [1] => xxxx-1111 )
Array ( [0] => Processed Amount [1] => $106.91 )
Array ( [0] => Transaction Id [1] => 5011056094736597703015 )
Array ( [0] => AVS Response [1] => Z (Street address does not match, but 5-digit postal code matches.) )
Array ( [0] => CVN Response [1] => M (Card verification number matched.) )
Array ( [0] => Merchant Reference Code [1] => 25f11646823dc7488b48c04491335936 )

我正在使用print_r(array($_label, $_value));来显示上述内容。

我想换掉商家参考代码值,即长字母数字。

这是一个 magento 构建,所以我假设我会回声

$order = Mage::getModel('sales/order')->load($orderId);
echo $order->getIncrementId();

完成工作最合适的方法是什么?

array_splice还是array_push

任何帮助将不胜感激。谢谢。

<div class="cards-list">
<?php if (!$this->getHideTitle()): ?>
<div class="bold"><?php echo $this->escapeHtml($this->getMethod()->getTitle()) ?></div>
<?php endif;?>
</div>
<?php
$cards = $this->getCards();
$showCount = count($cards) > 1;
?>
<?php foreach ($cards as $key => $card): ?>
<?php if ($showCount): ?>
<span><?php echo sprintf($this->__('Credit Card %s'), $key + 1); ?></span>
<?php endif;?>
<table class="info-table<?php if ($showCount):?> offset<?php endif;?>">
<tbody>
<?php foreach ($card as $_label => $_value):?>
<tr>
<td><?php echo $this->escapeHtml($_label)?>:</td>
<td><?php echo nl2br(implode($this->getValueAsArray($_value, true), "n"))?></td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
<?php endforeach; ?>

好的,所以根据您提供的print_r输出,我将假设您正在循环访问如下所示的数组并打印密钥($_label(和值($_value(。

$data = array(
'Credit Card Type' => 'MasterCard',
'Credit Card Number' => 'xxxx-1111',
'Processed Amount' => '$106.91',
'Transaction Id'=> '5011056094736597703015',
'AVS Response' => 'Z (Street address does not match, but 5-digit postal code matches.)',
'CVN Response' => 'M (Card verification number matched.)',
'Merchant Reference Code' => '25f11646823dc7488b48c04491335936'
);

那么,为什么不直接取消设置商家参考代码键并将您想要的任何键/值添加到数组中。 例如:

unset($data['Merchant Reference Code']);
$data['Order Id'] = $order->getIncrementId();

我认为您可以替换:

<?php foreach ($card as $_label => $_value):?>
<tr>
<td><?php echo $this->escapeHtml($_label)?>:</td>
<td><?php echo nl2br(implode($this->getValueAsArray($_value, true), "n"))?></td>
</tr>
<?php endforeach; ?>

跟:

<?php foreach ($card as $_label => $_value): ?>
<?php if ($_label === 'Merchant Reference Code') {
continue;
} ?>
<tr>
<td><?php echo $this->escapeHtml($_label)?>:</td>
<td><?php echo nl2br(implode($this->getValueAsArray($_value, true), "n"))?></td>
</tr>
<?php endforeach; ?>
<tr>
<td>Order ID:</td>
<td><?php echo $order->getIncrementId();?></td>
</tr>

注意:可以添加$this->__()来翻译"订单编号"和"商家参考代码">


编辑:回答评论

如果模板块类继承自Mage_Core_Block_Abstract则可以使用$this->__('some String)来使用 Magentos 默认方法来翻译某些内容。

所以第一件事是更换

<?php if ($_label === 'Merchant Reference Code') {

<?php if ($_label === $this->__('Merchant Reference Code')) {

这使得此检查语言无法转换为客户语言。对于德语,它将首先翻译成<?php if ($_label === Refferenz Code) {,它仍然有效。与"订单 ID:"相同。

要支持不同的语言...

  • My_Module.csv添加到app/locale/{LANG_ISO}/

    "Merchant Reference Code";"Translate string"
    
  • 使翻译文件在 中可用app/code/{pool}/My/Module/ect/config.xml将其添加到globalfrontendadminhtml部分

    <translate>
    <modules>
    <My_Module>
    <files>
    <default>My_Module.csv</default>
    </files>
    </My_Module>
    </modules>
    </translate>
    
  • 将帮助程序添加到"启用"翻译中,将其添加到app/code/{pool}/My/Module/Helpers/Data.php

    class My_Module_Helper_Data extends Mage_Core_Helper_Abstract
    {
    protected $_moduleName = 'My_Module';
    }
    

最新更新