2011-06-28 19 views
-1

こんにちは皆配列の要素から合計を得るために探しています。次の配列の中から外します。 最終的な合計サイズキーを積算します。配列の合計を取得する

Array 
(
    [105 - Screama & Merkury - Kiss Me (Ft. Farah).mp3] => Array 
     (
      [name] => 105 - Screama & Merkury - Kiss Me (Ft. Farah).mp3 
      [time] => 1309246242 
      [size] => 5912295 
      [hash] => ae6c5dda2b75a4fcbd9f36394f744717 
     ) 

    [106 - The Fives - It's What You Do (Ft. Vanya Taylor).mp3] => Array 
     (
      [name] => 106 - The Fives - It's What You Do (Ft. Vanya Taylor).mp3 
      [time] => 1309246243 
      [size] => 6361223 
      [hash] => 8898827f715e88c7c667bcbc716086f6 
     ) 

    [107 - Crazy Cousinz - Funky Anthem (Ft. MC Versatile).mp3] => Array 
     (
      [name] => 107 - Crazy Cousinz - Funky Anthem (Ft. MC Versatile).mp3 
      [time] => 1309246243 
      [size] => 4841021 
      [hash] => dce7d5d3b781625f3e74eab58efc3779 
     ) 

    [108 - Funky Dee - Are You Gonna Bang.mp3] => Array 
     (
      [name] => 108 - Funky Dee - Are You Gonna Bang.mp3 
      [time] => 1309246243 
      [size] => 3766429 
      [hash] => 6605b648ead22ace8e5ce77e3c53801f 
     ) 

    [109 - Mr M - Dash Down.mp3] => Array 
     (
      [name] => 109 - Mr M - Dash Down.mp3 
      [time] => 1309246243 
      [size] => 4099700 
      [hash] => 1dcb8a77de83ec0315fc4431ff31f311 
     ) 

    [110 - S-X - Woooo.mp3] => Array 
     (
      [name] => 110 - S-X - Woooo.mp3 
      [time] => 1309246243 
      [size] => 3364615 
      [hash] => 5069b5956c99bcf468bc3fd00178cc22 
     ) 

    [111 - Lil Silva - Different VIP.mp3] => Array 
     (
      [name] => 111 - Lil Silva - Different VIP.mp3 
      [time] => 1309246244 
      [size] => 4019543 
      [hash] => 8b73799089a8a8e64cdff8436fa8c446 
     ) 

    [crossdomain.xml] => Array 
     (
      [name] => crossdomain.xml 
      [time] => 1309245738 
      [size] => 216 
      [hash] => 3cb3c78f77460e93c87faec3b50a8434 
     ) 

) 

すべてのサイズキーを追加します。どのように私はこれを行うことができます私はarray_sumを使用して探していますが、今どのようにサイズキーを表示するには、配列を変更する必要はありません。

;)

答えて

3
$totalSize = 0; 
foreach($yourarray as $file => $attr) { 
    $totalSize += (int) $attr['size']; 
} 
1

PHP5.3溶液

$totalSize = array_reduce($array, function ($currentTotalSize, $attr) { 
    return $currentTotalSize + $attr['size']; 
}, 0); 

又は

$totalSize = array_sum(array_map(function ($attr) { 
    return $attr['size']; 
}, $array)); 

最初のものは `foreach'ループのため多かれ少なかれ異なる表記で、機能プログラミングに精通しているユーザーにとっては、わかりやすく(無視できる程度に)速くなければなりません。

第2の方法は、最初にすべてのエントリのサイズを抽出し、次にそれを合計することによって「素朴なアプローチ」です。

+0

$ totalSizeが範囲外になることはありませんか? – Phliplip

+0

私はそれらに異なる名前を付けるべきです。式の前に '$ totalSize'、クロージャーパラメータとして' $ totalSize'は異なる変数です。 – KingCrunch

+0

はい、あなたの前に 'array_reduce()'を使っていません。ちょうど[php.net/array_reduce](http://dk.php.net/array_reduce)の読書をした - 私は毎日学ぶ、私はそれが好き! – Phliplip

関連する問題