我一直在对数组进行排序,以取出唯一值并将相关值处理为累积值。
源代码:
while($row1 = mysql_fetch_array($result1))
{
$row1[8] = $row1[8] / 60;
echo "<tr>".
"<td>".$row1[0] . "</td>".
"<td>".$row1[1] . "</td>".
"<td>".$row1[2] . "</td>".
"<td>".$row1[3] . "</td>".
"<td>".$row1[4] . "</td>".
"<td>".$row1[5] . "</td>".
"<td>".$row1[6] . "</td>".
"<td>".$row1[7] . "</td>".
"<td>".$row1[8] . "</td>".
"<td>".$row1[9] . "</td>";
$counters = array();
$counters[$row1[9]] += $row1[8];
arsort($counters);
var_dump($counters);
var转储如下:
array(1) { ["derek"]=> int(2) }
array(1) { ["garyhui"]=> float(0.5) }
array(1) { ["nikole"]=> int(1) }
array(1) { ["tony"]=> int(4) }
array(1) { ["tony"]=> int(2) }
array(1) { ["tony"]=> float(3.5) }
array(1) { ["tony"]=> float(2.5) }
我需要的最终结果是smth类似
Derek : 2
Garyhui : 0.5
Nikole : 1
托尼:12<--请注意,这个数字能够根据以前的数组索引关联自行累积。感谢您的帮助!
使用array_key_exists()检查现有键值:
#like @Erik said, place this out of while loop,
#keeping it inside while makes it empty in every loop
$counters = array();
while($row1 = mysql_fetch_array($result1))
{
/*
Your echo code here
*/
if(array_key_exists($row1[9],$counters)){
#if exists, accumulate value of current key
$counters[$row1[9]] += $row1[8];
}
else
{
#if does not exist, create new key
$counters[$row1[9]] = $row1[8];
}
}
您一直在将$counters重新定义为空数组,因为您一直在循环中执行$counters = array()
。这就是为什么它们加不起来的原因。您必须删除这一行代码,并将其移动到循环上方的某个位置。就像这样:
$counters = array();
while($row1 = mysql_fetch_array($result1))
{
$row1[8] = $row1[8] / 60;
echo "<tr>".
"<td>".$row1[0] . "</td>".
"<td>".$row1[1] . "</td>".
"<td>".$row1[2] . "</td>".
"<td>".$row1[3] . "</td>".
"<td>".$row1[4] . "</td>".
"<td>".$row1[5] . "</td>".
"<td>".$row1[6] . "</td>".
"<td>".$row1[7] . "</td>".
"<td>".$row1[8] . "</td>".
"<td>".$row1[9] . "</td>";
$counters[$row1[9]] += $row1[8];
arsort($counters);
var_dump($counters);