0

我有2个数据数组。第一个数组包含销售经理的数据,第二个数组包含每个 scode 的总值。

下面的代码显示了销售经理的详细信息,它工作正常。

<?php  foreach ($allsales as $sales):?>
<?php if ($z != $sales['class']): ?>

  <tr>
  <td colspan = "6"><?php echo $sales['scode'];?><hr /> </td>
  </tr>

 <?php endif; ?>
 <tr>
  <td colspan = "2"><?php echo $sales['numb']?></td>
    <td><?php echo $sales['name']?></td>
    <td><?php echo $sales['scode']?></td>
    <td style="text-align: center"><?php echo $sales['months']?> Months</td>


    <?php
    $pending_unf =  $sales['amount'] * $sales['months']; 
    $pending = number_format((float)$pending_unf, 2, '.', '');
    ?>
    <td style="text-align: right"><?php echo $pending;?></td>

  </tr>
<tr>
  <td colspan = "6">Total Amount : XXXX</td>
  </tr>

  <?php $z = $sales['scode']; ?>
  <?php endforeach;?>

下面是我的第二个数组数据

array(11) {
  [0]=>
  array(2) {
    ["scode"]=>
    string(3) "10A"
    ["amount"]=>
    string(5) "12600"
  }
  [1]=>
  array(2) {
    ["scode"]=>
    string(3) "10B"
    ["amount"]=>
    string(5) "51600"
  }
  [2]=>
  array(2) {
    ["scode"]=>
    string(3) "11A"
    ["amount"]=>
    string(5) "60000"
  }
  [3]=>
  array(2) {
    ["scode"]=>
    string(3) "9B"
    ["amount"]=>
    string(5) "30000"
  }

我想做的是从第二个数组中获取金额并将其显示为总计,在每个 scode 组的末尾作为新行显示,如下所示

admission  name   months  scode
==================================
001        test1  3       10A
002        test2  5       10A
                Total    USD 1000

006        test3  7       15B
                Total    USD 1800

008        test4  1       15A
                Total    USD 800

011        test5  2       16C
                Total    USD 1600

051        test6  3       16A
012        test7  3       16A
                 Total    USD 2700

我只是尝试使用 foreach,但它在每一行都不断重复。但我希望它只显示在每组的末尾。

那么我如何访问第二个数组中的单个值并在条件语句中使用它以显示在每个组中最后一个 scode 的末尾?

任何帮助将不胜感激。

4

1 回答 1

0

我要做的是使用两个循环和一组“已读”代码。现在在第一个循环中,每次我碰巧在第一个数组上找到新的代码时,我都会把它放在“读取代码”的数组中并切换到内部循环,它从当前位置遍历所有数组并读取用户具有相同的代码。像这样(假设您具有在 secon 数组中查找“总值”的功能。

<?php
  $array1 = /*array of users*/;
  $array2 = /*array of total amouns of whatever*/;
  $read = array();  //theese scodes should be skipped next time
  for($i=0; $i<count($array1); $i++) {
    if(in_array($array1[$i]['scode'],$read))
      continue;  //If this user was already outputed, we skip him
                 //Othewise, we output all users with same SCODE
    $read[] = $array1[$i]['scode'];
    for($j=$i; $j<count($array1); $j++) {   //Note that I start from current position, all inputs before must be already read
      echo "User: {$array1[$j]['name']}\nScode: {$array1[$j]['scode']}\n\n";
    }
    echo "Total amount for theese users: ".get_total_amount($array1[$i]['scode'],$array2).PHP_EOL.PHP_EOL.PHP_EOL;  //finding amount for current scode.
  }

?>
于 2012-11-22T17:06:36.397 回答