今天遇到这样一个情景。这样的,一个抽奖活动,预先获取一堆人参与信息,一个人最多只能中奖一次。活动有活动的配置信息,比如说一等奖有多少人,二等奖有多少人等等。。

说白了,就是从这个参与人数组里,取出来一部分人放到各个奖项里。这里我的处理方式,直接把各个奖项的获奖者放到一起。

循环奖项的数组,然后从参与人信息里取数据。核心函数有两个,一个是shuffle(),一个是array_splice()

<?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();
// 删除并取出,array_splice()这个函数很强大,对数组的增删改都可以...第四个参数可以替换;返回值就是删除掉的元素组成的数组
foreach($prize_arr as $val){
$finall_arr[$val['id']] = array(
'person' => array_splice($persons, 0, $val['v'])
);
} print_r($finall_arr);

这里顺便记录下,array_splice()这个函数,操作的是数组的地址指针,直接改变原数组。并且它的返回值会改变数组原有的key,会重新索引。

而array_slice()这个数组不是操作指针,并且该函数还有个preserve_key是否保留原key的选项参数。它主要被用作截取某些个连续的数组元素。

最新文章

  1. WinCE项目应用之车载导航
  2. lintcode二叉树的锯齿形层次遍历 (双端队列)
  3. Repository 仓储,你的归宿究竟在哪?(一)-仓储的概念
  4. 跨站请求伪造 CSRF / XSRF&lt;一:介绍&gt;
  5. Atitit 面向对象 &#160;封装的实现原理
  6. java 24 - 9 GUI 之 给窗体换图标、设置启动在屏幕中间、更换皮肤
  7. css3控制内容的可选择性
  8. spring_150803_component
  9. IT技术方案最佳实践方案的收集
  10. struct2访问或添加request/session/application
  11. mysql更改默认存储引擎
  12. 201521123049 《JAVA程序设计》 第4周学习总结
  13. idea 里自动下载私服jar一直不能下载下来
  14. (9)SQL的注入(致命的漏洞)
  15. linux命令学习之:chown
  16. DWZ主从表界面唯一性验证(后台验证)(三)
  17. vm tools安装包为空
  18. C# SQLite事务操作方法分析
  19. Informix ConnetionString Pool Size
  20. JavaScript入门:002—JS代码放置的位置

热门文章

  1. 设计模式原则(6)--Open-Closed Principle(OCP)--开闭原则
  2. javascript原型对象与原型链
  3. cf19E. Fairy(奇环 二分图染色)
  4. js-ES6学习笔记-module(2)
  5. JS中判断数据类型的几种方法
  6. [原创]数据驱动决策:BI在零售业的数据化管理
  7. Android Studio引用自定义的framework.jar包
  8. 微信小程序开发1-入门知识准备
  9. Android 借助Stetho在Chrome上调试Android网络、数据库、Sharedpreferences
  10. 从零自学Java-2.初步理解Java程序使如何工作的