解决方案 »

  1.   

    $data = array();
    $data[] = array("id" => "123", "name" => "money", "before_save" => "10", "after_save" => "20", "create_date" => "2014-10-23");
    $data[] = array("id" => "123", "name" => "money", "before_save" => "20", "after_save" => "30", "create_date" => "2014-10-24");
    $data[] = array("id" => "123", "name" => "money", "before_save" => "30", "after_save" => "50", "create_date" => "2014-10-25");
    $data[] = array("id" => "123", "name" => "duration", "before_save" => "10", "after_save" => "20", "create_date" => "2014-10-23");
    $data[] = array("id" => "123", "name" => "duration", "before_save" => "20", "after_save" => "30", "create_date" => "2014-10-24");
    $data[] = array("id" => "456", "name" => "money", "before_save" => "60", "after_save" => "70", "create_date" => "2014-10-26");
    $data[] = array("id" => "456", "name" => "money", "before_save" => "70", "after_save" => "80", "create_date" => "2014-10-27");
    $data[] = array("id" => "456", "name" => "money", "before_save" => "80", "after_save" => "100", "create_date" => "2014-10-28");
    $data[] = array("id" => "456", "name" => "duration", "before_save" => "60", "after_save" => "70", "create_date" => "2014-10-26");
    $data[] = array("id" => "456", "name" => "duration", "before_save" => "70", "after_save" => "80", "create_date" => "2014-10-27");
    $data[] = array("id" => "456", "name" => "duration", "before_save" => "80", "after_save" => "100", "create_date" => "2014-10-28");$res = array();
    foreach($data as  $t) $res[$t['id']][$t['name']][$t['create_date']] = $t;$returndata = array();
    foreach($res as $t) {
      foreach($t as $r) {
        ksort($r);
        $v = current($r);
        $p = end($r);
        $v['after_save'] = $p['after_save'];
        $v['create_date'] = $p['create_date'];
        $returndata[] = $v;
      }
    }
    print_r($returndata);Array
    (
        [0] => Array
            (
                [id] => 123
                [name] => money
                [before_save] => 10
                [after_save] => 50
                [create_date] => 2014-10-25
            )    [1] => Array
            (
                [id] => 123
                [name] => duration
                [before_save] => 10
                [after_save] => 30
                [create_date] => 2014-10-24
            )    [2] => Array
            (
                [id] => 456
                [name] => money
                [before_save] => 60
                [after_save] => 100
                [create_date] => 2014-10-28
            )    [3] => Array
            (
                [id] => 456
                [name] => duration
                [before_save] => 60
                [after_save] => 100
                [create_date] => 2014-10-28
            ))
      

  2.   

    [code=php]$res = array();
    foreach($data as  $t) $res[$t['id']][$t['name']][$t['create_date']] = $t;$returndata = array();
    foreach($res as $t) {
      foreach($t as $r) {
        ksort($r);
        $v = array_pop($r);
        $p = array_shift($r);
        $v['before_save'] = $p['before_save'];
        $returndata[] = $v;
      }
    }
    print_r($returndata);/code]