2016-09-23 53 views
-3
<?php 
error_reporting(E_ALL); 
$test_array = Array(Array 
(
    "pid" => 1, 
    "encounter" => 20, 
    "code" => abc, 
    "fee" => 300.00 
), 
Array 
(
    "pid" => 1, 
    "encounter" => 20, 
    "code" => abc, 
    "fee" => 300.00 
), 
Array 
(
    "pid" => 2, 
    "encounter" => 20, 
    "code" => abc, 
    "fee" => 80 
), 
Array 
(
    "pid" => 3, 
    "encounter" => 20, 
    "code" => xyz, 
    "fee" => 90 
), 
Array 
(
    "pid" => 5, 
    "encounter" => 40, 
    "code" => xyz, 
    "fee" => 100 
), 
Array 
(
    "pid" => 3, 
    "encounter" => 40, 
    "code" => xyz, 
    "fee" => 100 
), 
Array 
(
    "pid" => 2, 
    "encounter" => 20, 
    "code" => abc, 
    "fee" => 80 
), 
Array 
(
    "pid" => 1, 
    "encounter" => 20, 
    "code" => xyz, 
    "fee" => 40 
)); 
//Declaration... 
$pre_pid = ""; 
$pre_encounter = ""; 
$pre_code = ""; 
$pre_fee = ""; 
$sum_charges = 0; 
/*Foreach loop*/ 
$i=0; 
foreach($test_array as $my_arr){ 
    $pre_pid = $my_arr['pid']; 
    $pre_encounter = $my_arr['encounter']; 
    $pre_code = $my_arr['code']; 
    if($pre_pid == $my_arr['pid'] && $pre_encounter == $my_arr['encounter'] && $pre_code == $my_arr['code']){ 
     echo "FEE-AMOUNT=".$my_arr['fee']; 
     $sum_charges+=$my_arr['fee']; 
     echo '<br/>'; 
    } 
$i++; 
} 
//Getting Sum = 1090 
//Actual Sum I needed = 710 
?> 

你好朋友我想上面的代码,我想要费用应该计算谁拥有相同的3键值对。 例如,如果每个数组3键值相同,则只计算这些费用数量。PHP阵列总和通过相同的键值对需要计算

+1

这里实施代码,不使用引擎收录或别的东西,这些链接arn't永久.. – Naruto

+0

粘贴您的代码在这里 –

+0

或阵列例如你试试这个[答案]之前和之后 –

回答

0

如果我理解你的问题,你需要总结的费列每次3个其他列具有相同的值。我定制了一下你的代码,这样你就可以为你的每个元素提供总成本。

//Declaration... 
$pre_pid = ""; 
$pre_encounter = ""; 
$pre_code = ""; 
$pre_fee = ""; 
$sum_charges = 0; 
$sum_array = array(); 
$total_fees = 0; 
/*Foreach loop*/ 

foreach($test_array as &$my_arr){ 

    $pre_pid = $my_arr['pid']; 
    $pre_encounter = $my_arr['encounter']; 
    $pre_code = $my_arr['code']; 
    $pre_fee = $my_arr['fee']; 
    $fee_ammount = $pre_fee; 
    $duplicates_check = array(); 

    foreach($test_array as $value) { 
     if($pre_pid == $value['pid'] && ($pre_encounter != $value['encounter'] || $pre_code != $value['code'])){ 

      $duplicate = false; 

      foreach($duplicates_check as $duplicate_array) { 
       if($duplicate_array == $value) 
        $duplicate =true; 
      } 
      if(!$duplicate) { 
       $fee_ammount += $value['fee']; 
       $duplicates_check[] = $value; 
      } 
     } 
    } 
    $my_arr['total_fee'] = $fee_ammount; 

    if(!isset($sum_array[$my_arr['pid']])) { 
     $sum_array[$my_arr['pid']] = $my_arr['total_fee']; 
     echo 'pid => '.$my_arr['pid'].', total fees => '.$my_arr['total_fee'].'<br />'; 
     $total_fees += $my_arr['total_fee']; 
    } 
} 

echo 'Total : '.$total_fees; 
var_dump($sum_array); 
+0

不工作先生我的预期ANS是710 –

+0

我人工检查,不存在用于710总和匹配pid,遇到和代码。 你能告诉我们需要添加哪些数组来获得710作为答案吗? – Alex

+0

的Pid 1(仅300 + 40)的Pid 2(80)的Pid 3(90 + 100)的pid 5(100)在此PID = 1的情况下,我想300仅一次,因为相同的PID,遭遇和代码。 pid = 3个不同的遭遇,这就是为什么100加入。 –