2017-07-26 62 views
1

我有一個數組,看起來像這樣:使用數組拼接換出數組的最後一個值?

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(); 

什麼將是最適當的方式GE完成這項工作?

array_splice or 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; ?> 
+0

你能澄清你所說的 「換出」 的意思。根據你對array_splice的引用,我假設你正在尋找從你的數組中刪除「Merchant Reference Code」元素,並添加另一個元素與訂單ID? –

+0

這是正確的@ ever.wakeful – Singleton

+0

你可以添加生成你的'$ _label'和'$ _value'的代碼嗎? – sv3n

回答

2

OK,所以根據您所提供的輸出的print_r,我會認爲你是通過一個數組,看起來像下面的循環和打印鍵($ _label)和價值($ _值)。

$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(); 
+0

當我用上面的代碼測試它時,它打破了頁面的下半部分。也許我做錯了什麼? – Singleton

+0

我想這取決於您添加該代碼的位置。很難只用你正在編寫的部分代碼進行分析。你在哪裏打電話Mage :: getModel('sales/order') - > load($ orderId); ? –

1

我想你可以替換:

<?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->__()翻譯 「訂單ID」 和「商家參考代碼「


編輯:回答評論

如果模板塊類從Mage_Core_Block_Abstract繼承您可以使用$this->__('some String)使用Magentos默認的方法來翻譯的東西。

所以第一件事就是更換

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

隨着

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

這使得被tranlated給客戶語言indepented這此檢查的語言。對於德語,它將首先翻譯爲<?php if ($_label === Refferenz Code) {,它仍然可以工作。 「訂單ID:」相同。

爲了支持不同的語言......

  • 可用

    "Merchant Reference Code";"Translate string" 
    
  • 化妝tranlation文件添加My_Module.csvapp/locale/{LANG_ISO}/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'; 
    } 
    
+0

它打破了頁面。請解釋最後一部分$ this - > __()。 – Singleton

+1

@Singleton更新了答案。 – sv3n