我有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的末尾?
任何帮助将不胜感激。
答案 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.
}
?>