随机取出数组中的某些值,并删除它们array_splice,array_slice
2024-08-27 03:38:56
今天遇到这样一个情景。这样的,一个抽奖活动,预先获取一堆人参与信息,一个人最多只能中奖一次。活动有活动的配置信息,比如说一等奖有多少人,二等奖有多少人等等。。
说白了,就是从这个参与人数组里,取出来一部分人放到各个奖项里。这里我的处理方式,直接把各个奖项的获奖者放到一起。
循环奖项的数组,然后从参与人信息里取数据。核心函数有两个,一个是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的选项参数。它主要被用作截取某些个连续的数组元素。
最新文章
- WinCE项目应用之车载导航
- lintcode二叉树的锯齿形层次遍历 (双端队列)
- Repository 仓储,你的归宿究竟在哪?(一)-仓储的概念
- 跨站请求伪造 CSRF / XSRF<;一:介绍>;
- Atitit 面向对象 &#160;封装的实现原理
- java 24 - 9 GUI 之 给窗体换图标、设置启动在屏幕中间、更换皮肤
- css3控制内容的可选择性
- spring_150803_component
- IT技术方案最佳实践方案的收集
- struct2访问或添加request/session/application
- mysql更改默认存储引擎
- 201521123049 《JAVA程序设计》 第4周学习总结
- idea 里自动下载私服jar一直不能下载下来
- (9)SQL的注入(致命的漏洞)
- linux命令学习之:chown
- DWZ主从表界面唯一性验证(后台验证)(三)
- vm tools安装包为空
- C# SQLite事务操作方法分析
- Informix ConnetionString Pool Size
- JavaScript入门:002—JS代码放置的位置
热门文章
- 设计模式原则(6)--Open-Closed Principle(OCP)--开闭原则
- javascript原型对象与原型链
- cf19E. Fairy(奇环 二分图染色)
- js-ES6学习笔记-module(2)
- JS中判断数据类型的几种方法
- [原创]数据驱动决策:BI在零售业的数据化管理
- Android Studio引用自定义的framework.jar包
- 微信小程序开发1-入门知识准备
- Android 借助Stetho在Chrome上调试Android网络、数据库、Sharedpreferences
- 从零自学Java-2.初步理解Java程序使如何工作的