求教各位大牛,现在又一个数组$a={[0]=>{123,张三,45},[1]=>{123,张三,60},[2]=>{234,李四,47},[3]=>{234,李四,68},[4]=>{234,李四,87}},求出张三和李四成绩最大值(最后一个值),不用mysql,只用php的数组操作,希望指教!!!

解决方案 »

  1.   

    $a = array(
      array( 123, '张三', 45 ),
      array( 123, '张三', 60 ),
      array( 234, '李四', 47 ),
      array( 234, '李四', 68 ),
      array( 234, '李四', 87 ),
    );foreach($a as $v)
      $r[$v[1]] = max($r[$v[1]], $v[2]);print_r($r);Array
    (
        [张三] => 60
        [李四] => 87
    )
      

  2.   

    如果是
    $a = array(
      array( 123, '张三','大一', 45 ),
      array( 123, '张三','大一', 60 ),
      array( 234, '李四', '大二',47 ),
      array( 234, '李四','大二', 68 ),
      array( 234, '李四','大一', 87 ),
    );
    同一个人,同一年的时候最大值呢?
      

  3.   

    $v[1] 改为 $v[1].$v[2]其实思路很简单,只要将组装关联键就可以了
    和数据库操作时一样
      

  4.   


    $a = array(
      array( 123, '张三','大一', 45 ),
      array( 123, '张三','大一', 60 ),
      array( 234, '李四', '大二',47 ),
      array( 234, '李四','大二', 68 ),
      array( 234, '李四','大一', 87 ),
    );
    foreach($a as $v){
    $r[$v[2]][$v[1]]=max($v[3],$r[$v[2]][$v[1]]);
    }
    print_r($r);
    /*Array
    (
        [大一] => Array
            (
                [张三] => 60
                [李四] => 87
            )
        [大二] => Array
            (
                [李四] => 68
            )
    )*/
      

  5.   


    我用max函数求最大值好用,为什么min函数求最小值不好用呢?有什么不一样的地方吗?
      

  6.   

    $a = array(
      array( 123, '张三', 45 ),
      array( 123, '张三', 60 ),
      array( 234, '李四', 47 ),
      array( 234, '李四', 68 ),
      array( 234, '李四', 87 ),
    );foreach($a as $v) {
      if(! $r[$v[1]]) $r[$v[1]] = 999;
      $r[$v[1]] = min($r[$v[1]], $v[2]);
    }print_r($r);需要有一个大的初值
    其实 max 时也是要初值的,只不过数组元素不出在时被当做了 0