2015-01-13 147 views
0

值我有下面的代码片段:替换的变量

public function getShippingData() 
{ 
    return array(
     'shipping_method' => $this->order->getShippingService(), 
     'shipping_price' => $this->getBaseShippingPrice(), 
     'carrier_title' => Mage::helper('M2ePro')->__('Amazon Shipping') 
    ); 
} 

我想改变这种更换SHIPPING_METHOD的价值。即

if ($shipping_method == 'valuea') { 
    $shipping_method = 'value1'; 
} 

if ($shipping_method == 'something') { 
    $shipping_method = 'somethingelse'; 
} 

我有完整的情景列表,这取决于shipping_method的值,我希望它等于别的东西。有没有更好的方法来实现这一点,而不是有100多条if语句?

+0

查找数组 - 查找键 - 用值替换。但是,您的'getShippingService'实际上应该返回结果数据。 –

回答

2

我会为此创建一个数组并替换基于某个键的值。

$new_shipping_methods = array(
    'valueA' => 'value1', 
    'valueB' => 'value2', 
    // ... 
); 

$shipping_method = $new_shipping_methods[$shipping_method]; 
0

查看switch控制结构。正是你所需要的,根据一个变量的不同选择,消除了很多if。

+0

对于这种情况,交换机肯定比多个ifs更好,但是您仍然不得不在每种情况下都重复上下文。上下文总是相同的,它取代了一个值,所以有更好的方法。 –