随机取出数组中的某些值,并删除它们array_splice,array_slice
2015-12-29 23:49
357 查看
今天遇到这样一个情景。这样的,一个抽奖活动,预先获取一堆人参与信息,一个人最多只能中奖一次。活动有活动的配置信息,比如说一等奖有多少人,二等奖有多少人等等。。
说白了,就是从这个参与人数组里,取出来一部分人放到各个奖项里。这里我的处理方式,直接把各个奖项的获奖者放到一起。
循环奖项的数组,然后从参与人信息里取数据。核心函数有两个,一个是shuffle(),一个是array_splice()
这里顺便记录下,array_splice()这个函数,操作的是数组的地址指针,直接改变原数组。并且它的返回值会改变数组原有的key,会重新索引。
而array_slice()这个数组不是操作指针,并且该函数还有个preserve_key是否保留原key的选项参数。它主要被用作截取某些个连续的数组元素。
说白了,就是从这个参与人数组里,取出来一部分人放到各个奖项里。这里我的处理方式,直接把各个奖项的获奖者放到一起。
循环奖项的数组,然后从参与人信息里取数据。核心函数有两个,一个是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的选项参数。它主要被用作截取某些个连续的数组元素。
相关文章推荐
- 可读性设计规范
- Delphi中的内存对齐 与 Packed关键字
- 节日
- 【mysql】关于innodb_file_format
- 太上感应篇0007
- springMVC返回数据的乱码问题
- project 计算器
- win32api显示BMP图片的最简单方案
- MySQL用户权限管理详解
- leetcode笔记:Subsets II
- php与Microsoft SQL Server
- 技术安家了
- win10下启动mysql解压版
- ViewPager使用详解
- 多声道音频指南(二):那些年,那些技术,那些名词
- 关于Xcode7中添加不了libresolv.dylib等类似库的问题
- JVM启动参数大全
- empty()函数经典详解
- 数据结构 JAVA描述(四) 树与二叉树基础
- 计数器