2011-06-28 79 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'环,但应该稍微快一点(可以忽略不计?),熟悉函数式编程的用户可以轻松理解。

第二个是“天真的方法”,首先提取所有条目的大小,然后总结它。

+0

$ totalSize不会超出范围吗? – Phliplip

+0

我应该给他们不同的名字。表达式前的$ totalSize和作为闭包参数的$ totalSize是不同的变量。 – KingCrunch

+0

是的你说得对,以前没有用过'array_reduce()'。只是在[php.net/array_reduce](http://dk.php.net/array_reduce)上做了一个readup - 我每天都在学习,我喜欢它! – Phliplip