2

好的,今天又把我的头发拉出来了。我需要遍历这个数组来获取这里看到的元素的键,如“升级、“高级”、“标准”等......所以我可以在表格中显示它们。

我已经尝试过了,这一切都让我“被遗弃”,我不知道如何在层次结构中向上移动。

foreach($calls as $call){
$results[ $call['queue_name'] ][ $call['type'] ] = $call['calls'];
$totalCalls += $call['calls'];
$typeTotals[ $call['type'] ] = isset( $typeTotals[ $call['type'] ]) ? $typeTotals[ $call['type'] ] + $call['calls'] : $call['calls'];
}

这是一个 var_dump:

array(5) { 
["Escalations"]=> array(3) { 
    ["abandoned"]=> string(1) "2" 
    ["completed"]=> string(1) "3" 
    ["redirected"]=> string(1) "1" } 

["Premium"]=> array(3) { 
    ["abandoned"]=> string(1) "7" 
    ["completed"]=> string(2) "29" 
    ["redirected"]=> string(1) "6" } 

["Standard"]=> array(3) { 
    ["abandoned"]=> string(2) "14" 
    ["completed"]=> string(2) "41" 
    ["redirected"]=> string(2) "53" } 

["Wingate Queue"]=> array(2) { 
    ["abandoned"]=> string(1) "2" 
    ["completed"]=> string(1) "3" } 

["WorldMark"]=> array(3) { 
    ["abandoned"]=> string(2) "32" 
    ["completed"]=> string(3) "100" 
    ["redirected"]=> string(2) "82" } } 


array(5) { 
["Escalations"]=> array(3) { 
    ["abandoned"]=> string(1) "2" 
    ["completed"]=> string(1) "3" 
    ["redirected"]=> string(1) "1" } 

["Premium"]=> array(3) { 
    ["abandoned"]=> string(1) "7" 
    ["completed"]=> string(2) "29" 
    ["redirected"]=> string(1) "6" } 

["Standard"]=> array(3) { 
    ["abandoned"]=> string(2) "14" 
    ["completed"]=> string(2) "41" 
    ["redirected"]=> string(2) "53" } 

["Wingate Queue"]=> array(2) { 
    ["abandoned"]=> string(1) "2" 
    ["completed"]=> string(1) "3" } 

["WorldMark"]=> array(3) { 
    ["abandoned"]=> string(2) "32" 
    ["completed"]=> string(3) "100" 
    ["redirected"]=> string(2) "82" } } 


array(5) { 
["Escalations"]=> array(3) { 
    ["abandoned"]=> string(1) "2" 
    ["completed"]=> string(1) "3" 
    ["redirected"]=> string(1) "1" } 

["Premium"]=> array(3) { 
    ["abandoned"]=> string(1) "7" 
    ["completed"]=> string(2) "29" 
    ["redirected"]=> string(1) "6" } 

["Standard"]=> array(3) { 
    ["abandoned"]=> string(2) "14" 
    ["completed"]=> string(2) "41" 
    ["redirected"]=> string(2) "53" } 

["Wingate Queue"]=> array(2) { 
    ["abandoned"]=> string(1) "2" 
    ["completed"]=> string(1) "3" } 

["WorldMark"]=> array(3) { 
    ["abandoned"]=> string(2) "32" 
    ["completed"]=> string(3) "100" 
    ["redirected"]=> string(2) "82" } }


array(5) { 
["Escalations"]=> array(3) { 
    ["abandoned"]=> string(1) "2" 
    ["completed"]=> string(1) "3" 
    ["redirected"]=> string(1) "1" } 

["Premium"]=> array(3) { 
    ["abandoned"]=> string(1) "7" 
    ["completed"]=> string(2) "29" 
    ["redirected"]=> string(1) "6" } 

["Standard"]=> array(3) { 
    ["abandoned"]=> string(2) "14" 
    ["completed"]=> string(2) "41" 
    ["redirected"]=> string(2) "53" } 

["Wingate Queue"]=> array(2) { 
    ["abandoned"]=> string(1) "2" 
    ["completed"]=> string(1) "3" } 

["WorldMark"]=> array(3) { 
    ["abandoned"]=> string(2) "32" 
    ["completed"]=> string(3) "100" 
    ["redirected"]=> string(2) "82" } }


array(5) { 
["Escalations"]=> array(3) { 
    ["abandoned"]=> string(1) "2" 
    ["completed"]=> string(1) "3" 
    ["redirected"]=> string(1) "1" } 

["Premium"]=> array(3) { 
    ["abandoned"]=> string(1) "7" 
    ["completed"]=> string(2) "29" 
    ["redirected"]=> string(1) "6" } 

["Standard"]=> array(3) { 
    ["abandoned"]=> string(2) "14" 
    ["completed"]=> string(2) "41" 
    ["redirected"]=> string(2) "53" } 

["Wingate Queue"]=> array(2) { 
    ["abandoned"]=> string(1) "2" 
    ["completed"]=> string(1) "3" }

["WorldMark"]=> array(3) { 
    ["abandoned"]=> string(2) "32" 
    ["completed"]=> string(3) "100" 
    ["redirected"]=> string(2) "82" } } 


 foreach($results as $result){
$perAbandoned = $totalCalls != 0 ? round( ($result['abandoned'] / $totalCalls) * 100 ) : 0;
$perRedirected = $totalCalls != 0 ? round( ($result['redirected'] / $totalCalls) * 100) : 0;
$perAnswered = $totalCalls != 0 ? round( ($result['completed'] / $totalCalls) * 100 ) : 0;  


echo  "<tr>";
echo "<td>" . key($result) . "</td>";//key
echo "<td>" . $totalCalls . "</td>";
echo "<td>" . $result['completed'] . "</td>";
echo "<td>" . $perAnswered . "%</td>";
echo "<td>" . $result['abandoned'] . "</td>";
echo "<td>" . $perAbandoned . "%</td>";
echo "<td>" . $result['redirected'] . "</td>";
echo "<td>" . $perRedirected . "%</td>";
echo "<td>techs logged in</td>";
echo  "</tr>";
}

阵列:

array(5) { 
["Escalations"]=> array(3) { 
    ["abandoned"]=> string(1) "2" 
    ["completed"]=> string(1) "3" 
    ["redirected"]=> string(1) "1" } 

["Premium"]=> array(3) { 
    ["abandoned"]=> string(1) "7" 
    ["completed"]=> string(2) "29" 
    ["redirected"]=> string(1) "6" } 

["Standard"]=> array(3) { 
    ["abandoned"]=> string(2) "14" 
    ["completed"]=> string(2) "41" 
    ["redirected"]=> string(2) "53" } 

["Wingate Queue"]=> array(2) { 
    ["abandoned"]=> string(1) "2" 
    ["completed"]=> string(1) "3" } 

["WorldMark"]=> array(3) { 
    ["abandoned"]=> string(2) "32" 
    ["completed"]=> string(3) "100" 
    ["redirected"]=> string(2) "82" } } 
4

3 回答 3

2

我认为您正在寻找这种语法:

foreach($results as $header => $result) {

   echo "<td>" . $header . "</td>";//key

}

希望您控制密钥名称的来源,因为这显然容易受到 XSS 问题的影响。

于 2013-10-17T15:43:32.753 回答
1
$types = ['abandoned', 'completed', 'redirected'];
foreach($results as $key=>$result){
   echo '<tr><td>'.$key.'</td><td>'.$totalCalls.'</td>';
   foreach($types AS $type){
      echo '<td>'.$result[$type].'</td><td>';
      echo $totalCalls != 0 ? round( ($result[$type] / $totalCalls) * 100 ) : 0;
      echo '%</td>';
   }
   echo '</tr>';
 }

看不出你的代码有什么问题,但它比需要的更长更混乱。

编辑:实际上听起来你正在循环遍历数组的第二维,你现有的 foreach 之前的代码在哪里?

于 2013-10-17T15:46:03.023 回答
0

我建议添加一个计数器,如果你想对第二个直到最后一个做一些事情,或者如果你对第二个直到最后一个没有任何关系,则在第一个值之后停止 foreach 循环

foreach($results as $value) 
{

$counter=1;
if($counter > 1)
{
//do what you want on the 2nd until the end value
}else
{
echo "this is the 1st value";
$first=$value; //or store it
}

}
于 2013-10-17T15:49:15.190 回答