PHP/MySQL多维/关联数组3试算平衡
我目前正在编写一个会计代码,它将根据MySql中存储的数据打印试算表。我似乎无法理解应该正确显示试算平衡表的阵列。数据集看起来有点像这样: id |账户|金额|支付模式 1学费5000元支票 2.2000美元现金 三千五百元现金 试算表的输出应以复式输入格式显示,如下所示: 账户|借方|贷方 银行5000 现金2000 500 学费7000 修理500 请注意,上述两个账户银行和现金必须根据paymode字段自动通过代码生成……在这种情况下,它们的值5000和2000也取决于金额列下的值 到目前为止,我当前的代码是这样的:它输出帐户总数,但只输出借方PHP/MySQL多维/关联数组3试算平衡,php,mysql,multidimensional-array,associative-array,Php,Mysql,Multidimensional Array,Associative Array,我目前正在编写一个会计代码,它将根据MySql中存储的数据打印试算表。我似乎无法理解应该正确显示试算平衡表的阵列。数据集看起来有点像这样: id |账户|金额|支付模式 1学费5000元支票 2.2000美元现金 三千五百元现金 试算表的输出应以复式输入格式显示,如下所示: 账户|借方|贷方 银行5000 现金2000 500 学费7000 修理500 请注意,上述两个账户银行和现金必须根据paymode字段自动通过代码生成……在这种情况下,它们的值5000和2000也取决于金额列下的值 到目前
// Make the query(Get Accounts and Totals):
$rein = @mysqli_query ($con, "SELECT account, amount, paymode FROM tbl_finance"); // Run the query.
$bg = '#eeeeee';
$accarr = array();
while($rowin = mysqli_fetch_array($rein, MYSQLI_ASSOC)) {
if(!isset($accarr[$rowin['type']])) {
$accarr[$rowin['type']]['amount'] = 0;
}
$sum = $rowin['amount_paid'];
$accarr[$rowin['type']]['amount'] += $sum;
$accarr[$rowin['type']]['paymode'] = $rowin['payterm'];
} // End While
mysqli_free_result($rein);
print_r($accarr);
echo '
<table>
<tr>
<td align="left"><b>ACCOUNT</b></td>
<td align="right"><b>DEBIT</b></td>
<td align="right"><b>CREDIT</b></td>
</tr>
';
$bg = '#eeeeee';
foreach($accarr as $acc => $data) {
$bg = ($bg=='#eeeeee' ? '#ffffff' : '#eeeeee');
echo '
<tr bgcolor="'. $bg .'">
<td align="left">'. $acc .'</td>
<td align="right">'. $data['amount'] .'</td>
</tr>
';
} // End foreach
echo '</table>';
编辑:上述语句的当前输出:
账户|借方|贷方
学费7000
修理500
问题:如何使用上面的数据集输出上面显示的数据,并在适当的情况下与借方和贷方对齐
提前谢谢好的,我应该在那些会计讲座中更加专心。现在我不知道除了银行和现金之外的账户是否可以同时有借方和贷方,但是由于您的示例条目没有指出,我猜它没有。此外,下面的代码假设上面的注释中指出,您有一个列,我将其命名为transaction,该列表示它是Dr条目还是Cr条目
您是否也可以粘贴您现在获得的当前输出?此外,我们如何知道某一特定账户是借记账户还是贷记账户?请参阅粘贴代码指南here@cheezburger,我是否应该添加另一个专栏,明确指出Dr或Cr?如果假设存在这样一列,代码会是什么样子?@Brian是的,我认为您的表需要另一列来指出哪个帐户记入借方,哪个帐户记入贷方。我将尝试编写代码,假设它存在。感谢@Cheezburger提供了可靠的答案…我也对预先确定帐户交易类型感到不安。。。有一个很好的会计教程,你可以从中学习。和@Brian上的Dr/Cr图表,您可能会发现如何在DB上存储“借方”“贷方”信息很有帮助。你也可以在这个网站上寻求建议。
//this array will hold bank and cash values
$main_acc=array('bank'=>array('Dr'=>0,'Cr'=>0), 'cash'=>array('Dr'=>0,'Cr'=>0));
//this one to hold other accounts and their amounts, transaction etc.
$acc = array();
while($rowin = mysqli_fetch_array($rein, MYSQLI_ASSOC)) {
/* store bank transaction type and amount */
if($rowin['paymode']=='Cheque'){
$main_acc['bank'][$rowin['transaction']] =$main_acc['bank'][$rowin['transaction']] + $rowin['amount'];
}
/* store cash transaction type and amount */
if($rowin['paymode']=='Cash'){
$main_acc['cash'][$rowin['transaction']] = $main_acc['cash'][$rowin['transaction']] + $rowin['amount'];
}
/* store other account transaction type and increment
amount if already exists */
if(isset($acc[$rowin['account']])){
$acc[$rowin['account']]['amount'] = $acc[$rowin['account']]['amount'] +$rowin['amount'];
}
else
{
$acc[$rowin['account']]['trans'] = $rowin['transaction'];
$acc[$rowin['account']]['amount'] = $rowin['amount'];
}
}
echo '
<table>
<tr>
<td align="left"><b>ACCOUNT</b></td>
<td align="right"><b>DEBIT</b></td>
<td align="right"><b>CREDIT</b></td>
</tr>
';
$bg = '#eeeeee';
//displaying bank and cash
foreach($main_acc as $key=>$val){
$bg = ($bg=='#eeeeee') ? '#ffffff' : '#eeeeee';
echo '<tr bgcolor="'. $bg .'">
<td align="left">'. $key .'</td>
<td align="left">'. (($val['Cr']!=0)?$val['Cr']:'') .'</td>
<td align="right">'. (($val['Dr']!=0)?$val['Dr']:'').'</td>
</tr>
';
}
//displaying other accounts
foreach($acc as $key=>$val){
$bg = ($bg=='#eeeeee') ? '#ffffff' : '#eeeeee';
echo '<tr bgcolor="'. $bg .'">
<td align="left">'. $key .'</td>
<td align="left">'. (($val['trans']=='Dr')?$val['amount']:'') .'</td>
<td align="right">'. (($val['trans']=='Cr')?$val['amount']:'') .'</td>
</tr>
';
}
echo '</table>';
ACCOUNT DEBIT CREDIT
bank 5000
cash 2000 500
TUITION 7000
Repairs 500