$ar = Array( 
  Array ( 
    'log_data' => 4,
    'log_result' => 0,
    'log_time' => '2013-05-08 10:08:40'
  ), 
  Array ( 
    'log_data' => 10018,
    'log_result' => 2,
    'log_time' => '2013-05-08 10:13:58',
  ),
  Array ( 
    'log_data' => 10018,
    'log_result' => 2,
    'log_time' => '2013-05-08 10:14:02',
  ),
  Array (
    'log_data' => 10003,
    'log_result' => 50,
    'log_time' => '2013-05-08 10:18:29',
  ),
);
foreach($ar as $item) {
  @$res[$item['log_data']][strtok($item['log_time'], ' ')] += $item['log_result'];
}
print_r($res);
Array
(
    [4] => Array
        (
            [2013-05-08] => 0
        )    [10018] => Array
        (
            [2013-05-08] => 4
        )    [10003] => Array
        (
            [2013-05-08] => 50
        ))

解决方案 »

  1.   

    谢谢谢谢xuzuning大侠!自己琢磨了很久把自己都搞晕了,看到您的代码有茅塞顿开的感觉!
      

  2.   


    <?php
    $ar = Array( 
      Array ( 
        'log_data' => 4,
        'log_result' => 0,
        'log_time' => '2013-05-08 10:08:40'
      ), 
      Array ( 
        'log_data' => 10018,
        'log_result' => 2,
        'log_time' => '2013-05-08 10:13:58',
      ),
      Array ( 
        'log_data' => 10018,
        'log_result' => 2,
        'log_time' => '2013-05-08 10:14:02',
      ),
      Array (
        'log_data' => 10003,
        'log_result' => 50,
        'log_time' => '2013-05-08 10:18:29',
      ),
    );$ret = array();foreach($ar as $val){
        if(!isset($ret[$val['log_data']][substr($val['log_time'],0,10)])){
            $ret[$val['log_data']][substr($val['log_time'],0,10)] = 0;
        }
        $ret[$val['log_data']][substr($val['log_time'],0,10)] += $val['log_result'];
    }print_r($ret);
    ?>Array
    (
        [4] => Array
            (
                [2013-05-08] => 0
            )    [10018] => Array
            (
                [2013-05-08] => 4
            )    [10003] => Array
            (
                [2013-05-08] => 50
            ))
      

  3.   

    谢谢fdipzone同学,可以再请教一个问题吗?
    是关于两个多维数组之间进行替换的问题数组A:
    Array ( 
    [0] => Array ( [pay_id] => 767 [pay_time] => 2013-05-28 04:39:25 [player_id] => 8860 [item_id] => 605688164 ) 
    [1] => Array ( [pay_id] => 768 [pay_time] => 2013-05-28 12:45:28 [player_id] => 5650 [item_id] => 605689038 ) )数组B:
    Array ( 
    [0] => Array ( [id] => 1 [pay_num] => 1 [item_id1] => 688644348 [item_id2] => 847414240 [item_id3] => 605688164 ) 
    [1] => Array ( [id] => 2 [pay_num] => 2 [item_id1] => 688644803 [item_id2] => 847991781 [item_id3] => 605689038 ) 
    [2] => Array ( [id] => 3 [pay_num] => 3 [item_id1] => 688645902 [item_id2] => 847999379 [item_id3] => 605689867 ) 
    [3] => Array ( [id] => 4 [pay_num] => 4 [item_id1] => 688644343 [item_id2] => 848000939 [item_id3] => 605690278 ) 
    [4] => Array ( [id] => 5 [pay_num] => 5 [item_id1] => 688644340 [item_id2] => 848041944 [item_id3] => 605690858 ) 
    [5] => Array ( [id] => 6 [pay_num] => 6 [item_id1] => 688644796 [item_id2] => 848044890 [item_id3] => 605692699 ) 
     )数组A中的item_id是属于数组B中的itemid1 - itemid3中的一个。求教,有什么好的方法可以将数组A中的item_id替换成数组B中对应的pay_num,并输出为数组C?
      

  4.   

    上一楼提出的问题我已经自己找到解决方案了,谢谢CSDN,谢谢每一个热心帮助回答的朋友
      

  5.   

    $a = Array ( 
      Array ( 'pay_id' => 767, 'pay_time' => '2013-05-28 04:39:25', 'player_id' => 8860, 'item_id' => 605688164 ), 
      Array ( 'pay_id' => 768, 'pay_time' => '2013-05-28 12:45:28', 'player_id' => 5650, 'item_id' => 605689038 ),
    );$b = Array ( 
      Array ( 'id' => 1, 'pay_num' => 1, 'item_id1' => 688644348, 'item_id2' => 847414240, 'item_id3' => 605688164 ),
      Array ( 'id' => 2, 'pay_num' => 2, 'item_id1' => 688644803, 'item_id2' => 847991781, 'item_id3' => 605689038 ),
      Array ( 'id' => 3, 'pay_num' => 3, 'item_id1' => 688645902, 'item_id2' => 847999379, 'item_id3' => 605689867 ),
      Array ( 'id' => 4, 'pay_num' => 4, 'item_id1' => 688644343, 'item_id2' => 848000939, 'item_id3' => 605690278 ),
      Array ( 'id' => 5, 'pay_num' => 5, 'item_id1' => 688644340, 'item_id2' => 848041944, 'item_id3' => 605690858 ),
      Array ( 'id' => 6, 'pay_num' => 6, 'item_id1' => 688644796, 'item_id2' => 848044890, 'item_id3' => 605692699 ), 
    );foreach($a as $item) {
      foreach(array_filter($b, function($row) use ($item) {
          return in_array(array_search($item['item_id'], $row), array('item_id1', 'item_id2', 'item_id3'));
        }) as $t) $item['item_id'] = $t['pay_num'];
      $c[] = $item;
    }
    print_r($c);Array
    (
        [0] => Array
            (
                [pay_id] => 767
                [pay_time] => 2013-05-28 04:39:25
                [player_id] => 8860
                [item_id] => 1
            )    [1] => Array
            (
                [pay_id] => 768
                [pay_time] => 2013-05-28 12:45:28
                [player_id] => 5650
                [item_id] => 2
            ))
      

  6.   

    提供另外一种思路 既然是对数组的每个元素处理可以封装一个回调函数来过滤需要的数组元素,然后调用array_filter函数处理,
    这样下次要是过滤条件变了直接改封装的函数就可以了,相当于把接口分离出来