今天遇到这样一个情景。这样的,一个抽奖活动,预先获取一堆人参与信息,一个人最多只能中奖一次。活动有活动的配置信息,比如说一等奖有多少人,二等奖有多少人等等。。
说白了,就是从这个参与人数组里,取出来一部分人放到各个奖项里。这里我的处理方式,直接把各个奖项的获奖者放到一起。
循环奖项的数组,然后从参与人信息里取数据。
<?php $prize_arr = array( array(‘id‘ => 1, ‘prize‘ => ‘平板电脑‘, ‘v‘ => 1), //其中id表示中奖等级,prize表示奖品,v表示中奖概率(这里暂时当人数了 array(‘id‘ => 2, ‘prize‘ => ‘数码相机‘, ‘v‘ => 2), array(‘id‘ => 3, ‘prize‘ => ‘音箱设备‘, ‘v‘ => 3), array(‘id‘ => 4, ‘prize‘ => ‘4G优盘‘, ‘v‘ => 4), ); $persons = array( ‘0‘ => ‘aaa‘, ‘1‘ => ‘bbb‘, ‘2‘ => ‘ccc‘, ‘3‘ => ‘ddd‘, ‘4‘ => ‘eee‘, ‘5‘ => ‘fff‘, ‘6‘ => ‘ggg‘, ‘7‘ => ‘hhh‘, ‘8‘ => ‘iii‘, ‘9‘ => ‘jjj‘, ‘10‘ => ‘kkk‘, ); shuffle($persons);// 打乱顺序,表示随机取人 $finall_arr = array(); foreach($prize_arr as $val){ $finall_arr[$val[‘id‘]] = array( ‘person‘ => get_del($persons, $val[‘v‘]), ); } print_r($finall_arr); // 取出一部分元素,并删除它们。传递数组地址 function get_del(&$arr, $length){ $temp = array_slice($arr, 0, $length);// 取出 array_splice($arr, 0, $length);// 删除,这个函数很强大,对数组的增删改都可以...第四个参数可以替换 return $temp; }
原文:http://www.cnblogs.com/firstForEver/p/5087494.html