2016-06-29 3 views
0

array_sumを別のforeachループを作成せずにループ内の文字列に追加するにはどうすればよいですか?私は、この多次元配列を持つ代わりにすべての数値をまとめて、値を持っていて、array_sumが配列の内側にあるため、それらを追加することはありません。何か案は?私は私の出力がarray_sum()を配列内の値にする

1488 => 
    array (size=2) 
     'item_value' => string 'Standby' (length=7) 
     'hours' => string '40.00' (length=5) 

編集になりたい

$hours_arr = array(); 
foreach($proj_time as $item){ 
    $hours_arr [$item['project_id']]['item_value'] = $item['item_value']; 
    $hours_arr [$item['project_id']]['hours'][] = $item['hours']; 
} 

//output 
array (size=3) 
    4 => 
    array (size=2) 
     'item_value' => string 'Coaching' (length=8) 
     'hours' => 
     array (size=1) 
      0 => string '999.99' (length=6) 
    1487 => 
    array (size=2) 
     'item_value' => string 'Standby' (length=7) 
     'hours' => 
     array (size=1) 
      0 => string '15.00' (length=5) 
    1488 => 
    array (size=2) 
     'item_value' => string 'Standby' (length=7) 
     'hours' => 
     array (size=4) 
      0 => string '10.00' (length=5) 
      1 => string '10.00' (length=5) 
      2 => string '10.00' (length=5) 
      3 => string '10.00' (length=5) 

:$ proj_time

Array 
(
    [0] => Array 
     (
      [project_id] => 4 
      [consultant_id] => 51 
      [engagement_id] => 8 
      [hours] => 999.99 
      [item_value] => Coaching 
     ) 

    [1] => Array 
     (
      [project_id] => 1487 
      [consultant_id] => 1 
      [engagement_id] => 1 
      [hours] => 15.00 
      [item_value] => Standby 
     ) 

    [2] => Array 
     (
      [project_id] => 1488 
      [consultant_id] => 31 
      [engagement_id] => 7 
      [hours] => 10.00 
      [item_value] => Design App RFP 
     ) 

    [3] => Array 
     (
      [project_id] => 1488 
      [consultant_id] => 32 
      [engagement_id] => 41 
      [hours] => 10.00 
      [item_value] => Training 
     ) 

    [4] => Array 
     (
      [project_id] => 1488 
      [consultant_id] => 55 
      [engagement_id] => 41 
      [hours] => 10.00 
      [item_value] => Training 
     ) 

    [5] => Array 
     (
      [project_id] => 1488 
      [consultant_id] => 1 
      [engagement_id] => 1 
      [hours] => 10.00 
      [item_value] => Standby 
     ) 

) 
+0

あなたは '$ proj_time'配列の内容を表示することができますか? – RomanPerekhrest

+0

@RomanPerekhrestそれを追加しました。 – Suzed

答えて

1

代わりの配列を作成、これを試してみてその後、iを作成しながら操作を適用しますtselfは、なぜあなたは、次のように要約していない:

DEMO

$hours_arr = array(); 
foreach($proj_time as $item){ 
    $hours_arr [$item['project_id']]['item_value'] = $item['item_value']; 
    if(array_key_exists('hours', $hours_arr [$item['project_id']])) 
     $hours_arr [$item['project_id']]['hours'] += $item['hours']; 
    else 
     $hours_arr [$item['project_id']]['hours'] = $item['hours']; 
} 

結果:

Array 
(
    [4] => Array 
     (
      [item_value] => Coaching 
      [hours] => 999.99 
     ) 

    [1487] => Array 
     (
      [item_value] => Standby 
      [hours] => 15 
     ) 

    [1488] => Array 
     (
      [item_value] => Standby 
      [hours] => 40 
     ) 

) 
+0

ありがとう、ありがとう。 – Suzed

0

の追加内容は

<?php 
    $hours_arr = array(); 
    foreach($proj_time as $item){ 
     if(!isset($hours_arr [$item['project_id']]) || $hours_arr [$item['project_id']]['item_value'] != $item['item_value']) {  
      $hours_arr [$item['project_id']]['item_value'] = $item['item_value']; 
      $hours_arr [$item['project_id']]['hours'][] = $item['hours']; 
     } else { 
      $hours_arr [$item['project_id']]['hours'][0] += $item['hours']; 
     } 
    } 
+0

幸運にも、配列はほぼ同じです。 http://pastebin.com/ci55girE – Suzed

+1

おっと私の悪い、時間を追加するキーを忘れてしまった。今すぐお試しください – b0ne

+0

非常に近い仲間。 – Suzed

関連する問題