-2

我在这里得到了这个PHP代码......

$totalBalance = 0;
    foreach($resultArray as $row) {
        foreach($row as $key =>$field) {
            echo $field['remaining'] . "<br>";
        }
    }

$resultArray 是从我的 SQL 查询返回到数组中的内容。

余额栏的前几条记录是..

389.96 6433.66 52.52 107.25

但是,当我运行这个 php 代码时,我得到了

1 5 1 3

为什么要这样做,我该如何解决?

如果有帮助,这是 SQL 查询

SELECT c.clientid, c.clientname, c.billingdate, 
case when (select ifnull(sum(total), 0) from invoice i
where i.client = c.clientid and i.isdeleted = 0) - (select ifnull(sum(p.amount), 0) from payment p inner join invoice i on p.invoice = i.invoiceid
where i.client = c.clientid and i.isdeleted = 0) < 0 then (select ii.total from invoice ii where ii.client = c.clientid and ii.isdeleted=0 order by ii.invoiceid desc limit 1)  else (select ifnull(sum(total), 0) from invoice i
where i.client = c.clientid and i.isdeleted = 0) - (select ifnull(sum(p.amount), 0) from payment p inner join invoice i on p.invoice = i.invoiceid
where i.client = c.clientid and i.isdeleted = 0) end as remaining,
case c.isactive+0
        when '1' then 'Stop'
        else 'Start' 
        end as Active
FROM client c 
ORDER BY clientname

我做了一个 $resultArray 的 print_r 并得到了这个......

Array ( [0] => Array ( [clientid] => 1 [clientname] => client A [billingdate] => 14 [remaining] => 389.96 [active] => Stop ) [1] => Array ( [clientid] => 178 [clientname] => client B [billingdate] => 23 [remaining] => 6433.66 [active] => Stop ) [2] => Array ( [clientid] => 3 [clientname] => client C [billingdate] => 19 [remaining] => 52.52 [active] => Stop ) [3] => Array ( [clientid] => 105 [clientname] => client D [billingdate] => 23 [remaining] => 107.25 [active] => Start )
4

3 回答 3

1

你正在做 1 对许多:

$totalBalance = 0;

foreach($resultArray as $row) {
  echo $row['remaining'] . "<br>";        
}

如果你想计算总余额:

$totalBalance = 0;

foreach($resultArray as $row) {
  echo $row['remaining'] . "<br>";        
  $totalBalance += $row['remaining'] ; 
}

echo $totalBalance . "<br>";        
于 2012-09-06T19:59:56.157 回答
0
<?php
$results = array( array('balance'=>123.45), array('balance'=>32.12));

$total = 0;

foreach( $results as $row )
{
    $total+=$row['balance'];
}

echo $total;
?>

输出:

155.57

于 2012-09-06T19:59:01.540 回答
0

来自 print_r 不应该是:

$totalBalance = 0;
    foreach($resultArray as $row) {
        foreach($row as $key =>$field) {
            echo $field['remaining'] . "<br>";
        }
    }

代替 :

$totalBalance = 0;
    foreach($resultArray as $row) {
        foreach($row as $key =>$field) {
            echo $field['balance'] . "<br>";
        }
    }
于 2012-09-06T20:06:59.747 回答