我试图让一个谁欠PHP
中的脚本,但是输入代码比我想象的要难得多。
我举了一个下面5个人的例子:
Person Paid Owes/Receivables
A 480 -26
B 600 94
C 1200 694
D 250 -256
E 0 -506
TOTAL 2530
Average owe per person = 506
我想要实现的是一个脚本,打印出每个人欠多少钱以及给谁。我的第一种方法是将欠钱的人分成array
,将需要在另一个array
获得报酬的人分开。我仍然对这种方法感到困惑,所以我无法解释我之后会做些什么。
这是我的剧本规则:
arrays
的值最高的第一个。不确定这是否有意义。我只是希望有人能澄清一下。
我已经制作了2个数组,我想可能是一段时间或者带有值的foreach循环,如果句子可以做到,但我现在很困惑。
答案 0 :(得分:1)
您拥有每个人支付的平均价值,您拥有每个人的应收账款和欠款值,现在您需要找到一种方法在拥有应收价值的人之间平均分配欠款。
使用“公平”算法和您的示例,可以按如下方式计算人员C的人员值:
$valueOwedByE * $valueReceivableByC / $totalReceivableValue
这为您提供了具有应收款值的人员中欠款值的加权分配。使用此算法,您的所有应收款值应同时达到0,而应收账款价值较高的人将获得更大的债务。
当然你可以使用不同的算法。在尝试实现它之前确定要使用的算法,尝试建立它的数学模型,然后实现它变得微不足道。
答案 1 :(得分:0)
使用关系数据库,SQLite可能是你想要做的事情的理想选择。如果没有,您可以使用关联数组模拟关系数据库。
这样你可以有两个表:
PERSONS
id INT
name VARCHAR(50)
DEBTS
debtor_id INT
creditor_id INT
value DECIMAL(8,2)
您可以在id
表格的PERSONS
上设置主键约束,然后使用debtor_id
和creditor_id
的合并作为DEBTS
中的主键。 debtor_id
和creditor_id
将是引用PERSONS
表的外键。
这样,如果John欠Jack $ 50.00,你就有这些记录:
PERSONS
id name
1 John
2 Jack
DEBTS
debtor_id creditor_id value
1 2 50.00