某算法

<?php
function ExplodeLines($text, $columnNames)
{
$arr = array();
$r1 = explode("\n", $text);
unset($r1[0]);
unset($r1[count($r1)]);
foreach ($r1 as $v1)
{
$v1 = explode(',', $v1);
array_push($arr, $v1);
}
foreach ($arr as &$v)
{
$v = array_combine($columnNames, $v);
}
return $arr;

}


$text = "
Apple,20,red
Pear,10,yellow
";
$columnNames = array('Fruit', 'Number', 'Color');


$result = ExplodeLines($text, $columnNames);


var_export($result);


/*
array(
array('Fruit'=>'Apple', 'Number'=>'20', 'Color'=>'red'),
array('Fruit'=>'Pear', 'Number'=>'10', 'Color'=>'yellow'),
)
*/


含折扣的退货算法

function CalcRefundAmount($orderItems, $discountAmount, $refundItems)
{
	$arr = $arrAmout = array();
	foreach ($orderItems as $k=>$v)
	{
		$num = array_product($v);
		array_push($arr, $num);
	}
	$count = array_sum($arr);
	$realpay = $count - $discountAmount;
	foreach ($refundItems as $k=>$v)
	{
		$refundAmout = ($orderItems[$k]['price'] * $v) * ($realpay / $count);
		array_push($arrAmout, round($refundAmout, 2));
	}
		
	return array_sum($arrAmout);
}

//(5.0 * 1) * (20.0/30.0) = 3.33 元(精确到2位小数)
$orderItems = array(
	'ItemA'=>array('price'=>5.0, 'quantity'=>2),
	'ItemB'=>array('price'=>20.0, 'quantity'=>1),
);
$refundItems = array('ItemA'=>1);
$discountAmount=10;

$result = CalcRefundAmount($orderItems, $discountAmount, $refundItems);
echo $result;



你可能感兴趣的:(某算法)