Heim  >  Artikel  >  php教程  >  AA制分账

AA制分账

PHP中文网
PHP中文网Original
2016-05-25 17:09:071227Durchsuche

php代码

<?php
header(&#39;content-type: text/html; charset=utf-8&#39;);
/**
 * AA账目
 * @author heping1
 */
class account{
	public $accounts;
	public $income;
	public $pay; 
	public $desc;
	function __construct($accounts)
	{
		foreach($accounts as $k=>$v)
    	{
    		if($v > 0)
    		{
    			$arr_income[$k] = $v;
    		}elseif($v < 0)
    		{
    			$arr_pay[$k] = $v;
    		}
    	}
    	arsort($arr_income);
		asort($arr_pay);
		$this->income = $arr_income;
		$this->pay = $arr_pay;
	}
    function AA()
    {
    	foreach($this->income as $k=>&$v)
    	{
    		foreach($this->pay as $k1=>&$v1)
    		{
    			if($v + $v1 > 0)
    			{
    				$this->desc[] = $k.&#39;给&#39;.$k1.($v1 * -1).&#39;元&#39;;
    				$this->income[$k] = $v + $v1;
    				unset($this->pay[$k1]);
    				$this->AA();
    			}else
    			{
    				$this->desc[] = $k.&#39;给&#39;.$k1.$v.&#39;元&#39;;
    				$this->pay[$k1] = $v + $v1;
    				unset($this->income[$k]);
    				$this->AA();
    			}
    		}
    	}
    }
}
$accounts = array(
	&#39;A&#39;=>50, // A总共需要支付的金额为50
	&#39;B&#39;=>40,
	&#39;C&#39;=>10,
	&#39;D&#39;=>-20, // D需要收取的金券为20
	&#39;E&#39;=>-30,
	&#39;F&#39;=>-20,
	&#39;G&#39;=>-30,
	&#39;H&#39;=>0
);
$account = new account($accounts);
$account->AA();
print_r($account->desc);
// output :
// Array ( [0] => A给G30元 [1] => A给E20元 [2] => B给E10元 [3] => B给D20元 [4] => B给F10元 [5] => C给F10元)
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn