访问数组中的各个值并根据条件显示

时间:2012-11-22 16:48:27

标签: php codeigniter codeigniter-2

我有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的末尾?

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

我要做的是使用两个循环和一组“已读”scodes。 现在在第一个循环中,每次我碰巧在第一个数组上找到新的scode时,我会把它放在“读取scodes”的数组中并且swich到内部循环,它从当前位置遍历所有数组并读取用户同样的scode。 像这样(假设你有能力在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.
  }

?>