2013-03-07 67 views
0

在此代碼段中,所有值都將由數據庫驅動,我需要更好地替換此代碼。任何人都可以幫助我用更好的方法替換此代碼片段,而無需使用ifif

佣金百分比將根據任務價格範圍計算。

$commission1=10;//in percentage 
    $commission2=20; 
    $commission3=30; 
    $taskprice =200; 
    if($taskprice >=0 && $taskprice <=150) 
     { 
    $adminearnings = ($taskprice *$commission1)/100 ; 
    $Geniepayment = $taskprice - $adminearnings; 
     } 
    else if($taskprice >=151 && $taskprice <=300) 
     { 
    $adminearnings = ($taskprice * $commission2)/100 ; 
    $Geniepayment = $taskprice - $adminearnings; 
     } 
    else if($taskprice >=301 && $taskprice <=450) 
    { 
    $adminearnings = ($taskprice * $commission3)/100 ; 
    $Geniepayment = $taskprice - $adminearnings; 
    } 
echo $taskprice.'</br>'; 
echo $adminearnings.'</br>'; 
echo $Geniepayment.'</br>'; 
+1

使用'開關case' ...... – 2013-03-07 04:07:39

+3

@YogeshSuthar我不確定一個開關會是最好的,因爲你不能做比較比較少。 – Jim 2013-03-07 04:10:31

+1

爲什麼你需要更好的替代品? – Scuzzy 2013-03-07 04:11:44

回答

0

傢伙怎麼樣這個想法..waiting爲您的反饋和建議

$commissions = array 
    (
    '0'=>array 
    (
    "commission_start_range"=>"0","commission_end_range"=>"100","commission_amount"=>"10" 
), 
    '1'=>array 
    (
    "commission_start_range"=>"101","commission_end_range"=>"200","commission_amount"=>"20" 
), 
    '2'=>array 
    (
    "commission_start_range"=>"201","commission_end_range"=>"300","commission_amount"=>"30" 
) 
); 

function check_commission($task_price,$commissions) 
    { 
    foreach($commissions as $commission_data) 
    { 
    $start = $commission_data['commission_start_range']; 
    $end = $commission_data['commission_end_range']; 
    $amount= $commission_data['commission_amount']; 
    if($task_price >=$start && $task_price <=$end) 
    { 
    $admin_earnings = ($task_price * $amount)/100 ; 
    $genie_payment = $task_price - $admin_earnings; 
    return $admin_earnings;//echo $admin_earnings; 
    } 
    } 
    } 
    check_commission(200,$commissions); 
0

至於我,我會做一個簡單的功能,有你所需要的快速訪問:

function calculate($commission, $taskprice) 
{ 
    $arrayCommission = array(0, 10, 20, 30); 
    $adminearnings = ($taskprice * $arrayCommission[$commission])/100 ; 
    $Geniepayment = $taskprice - $adminearnings; 
    return array($taskprice, $adminearnings, $Geniepayment); 
} 

這將是這樣的:

if($taskprice >=0 && $taskprice <=150) 
{ 
    $arrayAnswer = calculate(1, $taskprice); 
} 
elseif($taskprice >=151 && $taskprice <=300) 
{ 
    $arrayAnswer = calculate(2, $taskprice); 
} 
elseif($taskprice >=301 && $taskprice <=450) 
{ 
    $arrayAnswer = calculate(3, $taskprice); 
} 
+0

你是如何找到價格範圍的佣金 – 2013-03-07 04:23:53

+0

我編輯了我的答案,我現在想不到更好的東西。 – 2013-03-07 04:29:31

+0

請查看我的回答。 – 2013-03-08 08:43:21

1

我同意其他條件是必需的。我將重構拔出計算,這樣的事情:

<?php 

// Returns array(earnings, payment) 
// 
function getEarningsPayment($taskprice, $commission) 
{ 
    $earnings = ($taskprice * $commission)/100 ; 
    $payment = $taskprice - $adminearnings; 
    return array ($earnings, $payment); 
} 


$commission1=10;//in percentage 
$commission2=20; 
$commission3=30; 
$taskprice =200; 

if($taskprice >=0 && $taskprice <=150) 
    $commission = $commission1; 
else if($taskprice >=151 && $taskprice <=300) 
    $commission = $commission2; 
else if($taskprice >=301 && $taskprice <=450) 
    $commission = $commission3; 

list ($adminearnings, $Geniepayment) = getEarningsPayment($taskprice, $commission); 

echo $taskprice.'</br>'; 
echo $adminearnings.'</br>'; 
echo $Geniepayment.'</br>'; 

?> 
+0

請查看我的答案。 – 2013-03-08 08:43:05

相關問題