好吧,今天又把头发拔掉了。我需要遍历这个数组以获取此处看到的元素的键,如"升级"、"高级"、"标准"等......以便我可以在表中显示它们。
我试过这个,它给了我"放弃"的一切,我不知道如何在层次结构中向上移动。
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" } }
我认为您正在寻找以下语法:
foreach($results as $header => $result) {
echo "<td>" . $header . "</td>";//key
}
希望您控制键名称的来源,因为这显然容易受到XSS问题的影响。
$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之前的代码在哪里?
如果您想对
第二个直到最后一个做一些事情,我建议添加一个计数器或者在第一个值之后停止 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
}
}