如下二维数组中:
$arr = array (  
'0' => array ( 'userId' => 1,'thisUrl' => 'a.php', 'num' => '2' ),  
'1' => array ( 'userId' => 2,'thisUrl' => 'b.php', 'num' => '3' ),  
'5' => array ( 'userId' => 6,'thisUrl' => 'a.php', 'num' => '4')  
);
如果不用循环的思路,现问:
1 求三条记录对应的num总值,(应该为9)
2 求thisUrl为a.php 对应的num总值,(应该为6)
thanks..

解决方案 »

  1.   

    是什么原因导致你会要求“不用循环”呢?总不至于是为了脑筋急转弯吧,hehe
    不妨说说真正的问题是什么,也许有更好的办法。
    ————————————————————————————————
    基于CSDN论坛提供的插件扩展功能,自己做了个签名档工具,分享给大家,欢迎技术交流 :)
      

  2.   

    数据看起来很规整,是数据库取出的吗?是的话直接用查询语句解决.
    不是的话用array_map之类的加回调函数统计吧.
      

  3.   

    观察你这个数组 键  0 对应值 1  键 1 对应值 2 .....$arrKey = array_keys ( $arr );
    $count = count( $arrKey );
    $sum = array_sum( $arrKey ) + $count;
    echo 'sum = ' . $sum;
      

  4.   

    $arr = array (   
    '0' => array ( 'userId' => 1,'thisUrl' => 'a.php', 'num' => '2' ),   
    '1' => array ( 'userId' => 2,'thisUrl' => 'b.php', 'num' => '3' ),   
    '5' => array ( 'userId' => 6,'thisUrl' => 'a.php', 'num' => '4')   
    );
    function rsum($v, $w) {
      if($w['thisUrl'] == 'a.php')
        $v += $w['num'];
      return $v;
    }echo $b = array_reduce($arr, "rsum");// 6
      

  5.   

    多谢大家
    9楼的,
    function rsum($v, $w) {
      if($w['thisUrl'] == 'a.php')
      $v += $w['num'];
      return $v;
    }这个函数能再封装下吗,怎么修改,(因为thisUrl  a.php  num这三个值是变量)
      

  6.   

    9楼的,
    function rsum($v, $w) {
      if($w['thisUrl'] == 'a.php')
      $v += $w['num'];
      return $v;
    }这个函数能再封装下吗,怎么修改,(因为thisUrl a.php num这三个值是变量)
      

  7.   

    我希望把 二维数组 $arr = array (   
    '0' => array ( 'userId' => 1,'thisUrl' => 'a.php', 'num' => '2' ),   
    '1' => array ( 'userId' => 2,'thisUrl' => 'b.php', 'num' => '3' ),   
    '5' => array ( 'userId' => 6,'thisUrl' => 'a.php', 'num' => '4')   
    );转换成 
    $arr = array (   
    'a.php' => array( array ( 'userId' => 1,'thisUrl' => 'a.php', 'num' => '2' ), array ( 'userId' => 6,'thisUrl' => 'a.php', 'num' => '4') ) 
    'b.php' => array ( 'userId' => 2,'thisUrl' => 'b.php', 'num' => '3' ),   
     
    );要怎么做?