2016-09-23 1 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-х значений ключа одинаковый, тогда рассчитывается только эта сумма.PHP Array Sum По одной и той же ключевой стоимости пара должна быть рассчитана

+1

Реализовать код здесь, не используйте Pastebin или что-то еще, эти ссылки 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

Не работает sir Мой ожидаемый ans 710 –

+0

Я проверил вручную, нет 710 сумм для соответствие pid, встреча и код. Можете ли вы рассказать нам, какие массивы необходимо добавить, чтобы получить 710 в качестве ответа? – Alex

+0

Pid 1 (Только 300 + 40) Pid 2 (80) Pid 3 (90 + 100) pid 5 (100) Здесь pid = 1 case я хочу 300 только один раз, потому что тот же pid, столкновение и код. pid = 3 разная встреча, поэтому 100 добавлено. –

Смежные вопросы