任何人都可以帮助我用更好的方法替换此代码片段,而无需使用ifif
在此代码段中,所有值都将由数据库驱动,我需要更好地替换此代码。任何人都可以帮助我用更好的方法替换此代码片段,而无需使用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>';
家伙怎么样这个想法..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);
至于我,我会做一个简单的功能,有你所需要的快速访问:
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);
}
你是如何找到价格范围的佣金 – 2013-03-07 04:23:53
我编辑了我的答案,我现在想不到更好的东西。 – 2013-03-07 04:29:31
请查看我的回答。 – 2013-03-08 08:43:21
我同意其他条件是必需的。我将重构拔出计算,这样的事情:
<?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>';
?>
请查看我的答案。 – 2013-03-08 08:43:05
使用'开关case' ...... – 2013-03-07 04:07:39
@YogeshSuthar我不确定一个开关会是最好的,因为你不能做比较比较少。 – Jim 2013-03-07 04:10:31
为什么你需要更好的替代品? – Scuzzy 2013-03-07 04:11:44