$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
))
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
))
<?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
))
是关于两个多维数组之间进行替换的问题数组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?
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
))
这样下次要是过滤条件变了直接改封装的函数就可以了,相当于把接口分离出来