使用 PHP 解析多维数组中的数据


parse data within multidimensional array using php

我发现这很难解释,知道如何为此寻找答案。昨天在你们可爱的人的帮助下,我将 ~1200 个 MySQl 查询减少到只有 2 个,但现在我对结果无能为力。这是我返回的数组(片段)

Array 
( 
[0] => Array ( [total] => 7 [closedby] => Adam_Howard [priority] => P3 [withinfix] => 0 ) 
[1] => Array ( [total] => 20 [closedby] => Adam_Howard [priority] => P3 [withinfix] => 1 ) 
[2] => Array ( [total] => 3 [closedby] => Adam_Howard [priority] => P4 [withinfix] => 0 ) 
[3] => Array ( [total] => 5 [closedby] => Adam_Howard [priority] => P4 [withinfix] => 1 ) 
[4] => Array ( [total] => 3 [closedby] => Adam_Jones [priority] => P3 [withinfix] => 0 ) 
[5] => Array ( [total] => 2 [closedby] => Adam_Jones [priority] => P3 [withinfix] => 1 ) 
[6] => Array ( [total] => 11 [closedby] => Adrian_Dimmock [priority] => P2 [withinfix] => 0 ) 
[7] => Array ( [total] => 39 [closedby] => Adrian_Dimmock [priority] => P2 [withinfix] => 1 ) 
[8] => Array ( [total] => 20 [closedby] => Adrian_Dimmock [priority] => P3 [withinfix] => 0 ) 
[9] => Array ( [total] => 301 [closedby] => Adrian_Dimmock [priority] => P3 [withinfix] => 1 ) 
[10] => Array ( [total] => 2 [closedby] => Adrian_Dimmock [priority] => P4 [withinfix] => 0 ) 
[11] => Array ( [total] => 33 [closedby] => Adrian_Dimmock [priority] => P4 [withinfix] => 1 ) 
[12] => Array ( [total] => 37 [closedby] => Adrian_Hull [priority] => P2 [withinfix] => 0 ) 
[13] => Array ( [total] => 1211 [closedby] => Adrian_Hull [priority] => P2 [withinfix] => 1 ) 
[14] => Array ( [total] => 4 [closedby] => Adrian_Hull [priority] => P3 [withinfix] => 0 ) 
[15] => Array ( [total] => 771 [closedby] => Adrian_Hull [priority] => P3 [withinfix] => 1 ) 
[16] => Array ( [total] => 4 [closedby] => Adrian_Hull [priority] => P4 [withinfix] => 1 )
)

我正在努力的最终输出是总数,每人,每个优先级,每个withinfix,因此,例如,最后2行可以给出如下结果:

$AdrianHullP3Fix1 = 771;
$AdrianHullP4Fix1 = 4;

但是我不知道如何从我拥有的结果中做到这一点,任何人都可以推荐一个解决方案或只是正确的 php 方法/函数让我调查吗?

如果有帮助,这是我用来从查询创建数组的代码:

while($row = mysql_fetch_assoc($Query)){
$results[] = $row;
}

希望这对您有所帮助。

// this will be the word that you want to attached to a variable
define('WORD_TO_ADD','Fix');
while($row = mysql_fetch_assoc($Query)){
$variableName = str_replace("_","",$row['closedby']).$row['priority'].WORD_TO_ADD.$row['withinfix'];
    $$variableName = $row['total'];
}
echo $AdrianHullP3Fix1; // o/p 771 
echo $AdrianHullP4Fix1; // o/p 4 
while($row = mysql_fetch_assoc($Query)){
    ${$row['closedby'].$row['closedbypriority'].$row['closedbywithinfix']}  = $row['total'];
}

${} 将创建新的动态变量

希望这个帮助

可能不优雅,但我已经用内爆和爆炸想通

while($row = mysql_fetch_assoc($Query)){
$rowString = implode ("_", $row); //make the row into a string
$minusTotalParts = explode("_", $rowString); // explode it by the underscores
$minusTotal = $minusTotalParts[0]."_".$minusTotalParts[1].$minusTotalParts[2]."Fix".$minusTotalParts[3]; //create the variable string
eval('return $'.$minusTotal.' = '.$minusTotalParts[4].';'); //create the variable of $firstname_surnameP2Fix0 where the SLA and withinfix changes each time, it then give it the total value
}