2016-02-18 71 views
1

我真的在努力过滤我的数据。我知道如何访问数组的部分,但我在如何过滤挣扎。我知道如何在SQL SUM & count中做到这一点),但当涉及到PHP数组请帮忙。如何从我的数组php中过滤数据?

我需要过滤一些存储在变量$ res中的数据。

我需要看每个“REF”出现了多少次&总“LCL_D_CBM”每个裁判这一切在“TERR”等于“TERR1”。

foreach ($res as $res1){ 


    if ($res1["TERR"] == "TERR1"){ 

    //the individual ref 
    //$res1['REF']; 


    // the coutn of how many times each ref appears 
    //echo count($res1['REF']); 

    //sum 
    //echo array_sum($res1['LCL_D_CBM']);  



    } 
} 

需要导致要像 -

CEA

CEF

var_dump($res); gives me below 
 

 
array(350) { 
 
    
 
[0]=> array(7) { [0]=> string(3) "CEA" ["REF"]=> string(3) "CEA" [1]=> string(5) "1.080" ["LCL_D_CBM"]=> string(5) "1.080" [2]=> string(3) "WF2" ["AREA_CODE"]=> string(3) "WF2" ["TERR"]=> string(5) "TERR1" } 
 
      
 
[1]=> array(7) { [0]=> string(3) "CEA" ["REF"]=> string(3) "CEA" [1]=> string(5) "2.000" ["LCL_D_CBM"]=> string(5) "2.000" [2]=> string(4) "HU13" ["AREA_CODE"]=> string(4) "HU13" ["TERR"]=> string(5) "TERR1" } 
 
      
 
[2]=> array(7) { [0]=> string(3) "CEF" ["REF"]=> string(3) "CEA" [1]=> string(5) "2.448" ["LCL_D_CBM"]=> string(5) "2.448" [2]=> string(4) "TW16" ["AREA_CODE"]=> string(4) "TW16" ["TERR"]=> string(5) "TERR2" } ..... etc

+0

什么是你第一次尝试的代码来实现这一目标? –

+0

请用换行符重新格式化。没有人想滚动。 – Gordon

+0

@bub请参阅编辑问题 –

回答

2

你能解决这个样子。不是一个漂亮的解决方案,但应该做的工作。 (我没有测试这个,所以它可能包含一个拼写错误或其他东西):

$sum_lcl = 0; 
$unique_refs = array(); 
foreach ($res as $res1){ 

    if (!array_key_exists($res1['REF'], $unique_refs)) { 
     $unique_refs[$res1['REF']] = array(); 
    } 

    $unique_refs[$res1['REF']]['SUM'] = (array_key_exists('SUM', $unique_refs[$res1['REF']])) ? (intval($unique_refs[$res1['REF']]['SUM']) + 1) : 1; 
    $unique_refs[$res1['REF']]['LCL_SUM'] = (array_key_exists('LCL_SUM', $unique_refs[$res1['REF']])) ? (floatval($unique_refs[$res1['REF']]['LCL_SUM']) + floatval($res1['LCL_D_CBM'])) : 1; 


} 


foreach($unique_refs AS $unique => $data){ 
    $title = $unique; 
    $sum = $data['SUM']; 
    $lcl_sum = $data['LCL_SUM']; 
    echo "{$title}<br />{$sum}<br />{$lcl_sum}"; 
} 
+0

您的代码将所有LCL_D_CBM进行汇总,每次裁判出现的次数不起作用。请参阅编辑的问题,看看我希望结果如何。谢谢 –

+0

Mkay。相应地编辑我的答案。从这一点,虽然,Id建议你尝试改变它,如果需要,实际上从中学习:) –

+0

惊人的你可以把糖衣放在蛋糕上,并得到它显示在我的问题,所以我可以让我的头绕它并学习它。谢谢youuu –