2012-03-13 8 views
0

に対するアレイとマップ内のキー私は次のような問題を有していないし、率直に言ってどのようにそれを解決するためには考えています。各配列は、キーで数値を持ってい合計24時間体制

[0]との時間キー[1]。私の目標は、この出力を24時間にマッピングすることです。

合計すべてのキー[0]キー、[1]時刻00:00の間にある値 - 1時、1時 - 午前2時など、

一定時間内に何の値が存在しない場合「0」を印字してください。ここ

は、値を保持する配列である:

Array ( 

[4045862944400] => Array ( 
[0] => 192 
[1] => 23:52 
) 
[403274909688162] => Array ( 
[0] => 186 
[1] => 22:21 
) 
[402735273075459] => Array ( 
[0] => 311 
[1] => 04:29 
) 
[252948031457462] => Array ( 
[0] => 385 
[1] => 06:22 
) 
[400606749954978] => Array ( 
[0] => 287 
[1] => 05:01 
) 
[286755318061725] => Array ( 
[0] => 358 
[1] => 04:51 
) 
[399687880046865] => Array ( 
[0] => 257 
[1] => 21:51 
) 
[398332190182434] => Array ( 
[0] => 240 
[1] => 23:19 
) 
[397768486905471] => Array ( 
[0] => 311 
[1] => 05:38 
) 
[396907650324888] => Array ( 
[0] => 293 
[1] => 03:38 
) 
[394850557197264] => Array ( 
[0] => 496 
[1] => 05:12 
) 
[394121230603530] => Array ( 
[0] => 475 
[1] => 04:15 
) 
[69757766367627] => Array ( 
[0] => 488 
[1] => 04:01 
) 
[391602517522068] => Array ( 
[0] => 506 
[1] => 03:44 
) 
[390848830930770] => Array ( 
[0] => 437 
[1] => 06:05 
) 
[389975351018118] => Array ( 
[0] => 452 
[1] => 04:00 
) 
[242486689170043] => Array ( 
[0] => 525 
[1] => 04:13 
) 
[388151047867215] => Array ( 
[0] => 415 
[1] => 00:22 
) 
[387476447934675] => Array ( 
[0] => 502 
[1] => 04:51 
) 
[386620518020268] => Array ( 
[0] => 467 
[1] => 06:05 
) 
[215937481836499] => Array ( 
[0] => 359 
[1] => 01:10 
)) 

出力が24時間を表し、各時間の値の記載和を有する配列であるべきです。

答えて

1

のためのサブループはここであなたが軌道に乗るためのアイデアだと:

$hours = array(); 
foreach($input as $v) { 
    $lowerHour = array_shift(explode(':', $v[1])); 

    if(!array_key_exists($lowerHour, $hours)) $hours[$lowerHour] = 0; 
    $hours[$lowerHour] += $v[0]; 
} 

print_r($hours); 
+0

こんにちは@Andreasを、それは気の利いたアプローチです。ありがとうございました。それは、現在価値がある時間のために "0"を除いて私が必要とするものを正確に産出します。あなたはそれをどのように組み込むのか知っていますか? –

+0

G.W、あなたがどういう意味かはっきりしていない...あなたは詳細を教えてくれますか? :) –

+0

確か@Andreas、私の目標は、$時間のように配列を取得するだけでなく、値を持つ時間だけでなく、持っていない時間を表示することです。すなわち 00:00 - 01:00 => 456 01:00 - 02:00 => 654 02:00 - 03:00 => 0 //値はありません。0 03:00 - 04:00 => 456 など 最終的な配列は、24時間の1時間単位のブレークダウンが必要です。各時間はキーの合計を保持する必要があり、指定された時間の値がない場合は "0"を出力する必要があります。 –

1

まず、(はmktime()関数を持つループ「のための」シンプル、)あなたの24時間の範囲の各時間を表す指標の配列データ配列内の各項目について次に

を構築する24時間にそれらを並べ替えますその期間を「子供」と呼ばれるキーを持つサブ配列として表すインデックスで範囲指定された配列を返します。表示のための

、あなたの最初の24時間営業の配列をループ、それぞれの子要素