随机取出数组中的某些值,并删除它们array_splice,array_slice
今天遇到这样一个情景。这样的,一个抽奖活动,预先获取一堆人参与信息,一个人最多只能中奖一次。活动有活动的配置信息,比如说一等奖有多少人,二等奖有多少人等等。。
说白了,就是从这个参与人数组里,取出来一部分人放到各个奖项里。这里我的处理方式,直接把各个奖项的获奖者放到一起。
循环奖项的数组,然后从参与人信息里取数据。核心函数有两个,一个是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的选项参数。它主要被用作截取某些个连续的数组元素。
随机取出数组中的某些值,并删除它们array_splice,array_slice的更多相关文章
- jst通用删除数组中重复的值和删除字符串中重复的字符
以下内容属于个人原创,转载请注明出处,非常感谢! 删除数组中重复的值或者删除字符串重复的字符,是我们前端开发人员碰到很多这样的场景.还有求职者在被面试时也会碰到这样的问题!比如:问删除字符串重复的字符 ...
- PHP中获取数组中单列的值
PHP中获取数组中单列的值如下: 利用PHP中的数组函数 array_column():返回数组中某个单列的值.(PHP 5.5+适用) 语法: array_column(array,column_k ...
- c# 获取数组中最大数的值
求数组中最大的数的值:1.数组的max函数: class Program { static void Main(string[] args) { ,,,,,,,,,}; int max= GetMax ...
- php取出数组中的最大值
<?php /** * @param $arr * @return mixed * php取出数组中的最大值(方法一) */ function getMax($arr){ $max=$arr[0 ...
- JavaScript查找数组中最大的值
// 查找一个数组中最大的数 // 定义一个方法 searchMax function searchMax(arr) { // 声明一个变量MaxNumber假设为数组中最大的值arr[0]; var ...
- PHP检测数组中的每个值是否含有特殊字符
本文出至:新太潮流网络博客 /** * [TestArray 检测数组是一维还是二维] * @E-mial wuliqiang_aa@163.com * @TIME 2017-04-07 * @WEB ...
- ShuffleElements(随机打乱数组中的元素)
给定一个数组,随机打乱数组中的元素,题意很简单直接上代码: package Array; import java.util.Arrays; import java.util.Collections; ...
- PHP如何根据数组中的键值进行排序
主要是使用PHP的排序函数,asort()和arsort(). 为了减少代码的耦合性,我们将根据数组中的键值进行排序封装成一个函数 <?php $array = array( array(), ...
- JavaScript去除数组中的重复值
用原型函数(prototype)可以定义一些很方便的自定义函数,实现各种自定义功能. Javascript 中的原型函数(prototype)的工作原理,在 javascript 中每次声明新函数的过 ...
随机推荐
- 使用ThinkPHP实现生成缩略图及显示
首先了解父类Image.class.php(ThinkPHP/Library/Think/Image.class.php)中的一些函数 1:open() 打开被处理的图片 2:thumb() 生成缩略 ...
- vue 数据请求
作者QQ:1095737364 QQ群:123300273 欢迎加入! 要引入模块: vue-resource 1.在package.json中的dependencies中添加vue ...
- SpringMVC—Struts2拦截器学习网址整理
引自:http://blog.csdn.net/wp1603710463/article/details/49982683 SpringMVC—Struts2拦截器学习网址整理 最近项目中遇到权限相关 ...
- jQuery事件和JSON点语法
<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" ...
- 使用angular-cli脚手架快速搭建项目
第一步 安装全局的angular-cli, npm install -g @angular/cli 或者 cnpm install -g @angular/cli@v1.0.0-rc.2 – 国内淘宝 ...
- Ubuntu安装ffmpeg
二.linux源码安装: 如下: 下载 源码包:http://ffmpeg.org/releases/ffmpeg-3.3.tar.bz2 1.从网络上下载到的源码包,然后解压到指目录 假设下载目录 ...
- MySQL隐形索引简介
不可见索引允许您将索引标记为查询优化器不可用.MySQL维护不可见索引,并在与索引关联的列中的数据发生更改时使其保持最新. 默认情况下,索引是可见的.要使它们不可见,您必须在创建时或使用ALTER T ...
- cdn刷新和对应的浏览器现象
1.浏览器手动点刷新,会发起网络请求,从cdn判断last-modify时间是否一致,未过期则返回304,如果已经过期则返回200,重新请求 关键在于发起的网络请求中'If-Modified-Sinc ...
- fedora27安装谷歌浏览器Chrome
安装 添加chrome源 #cd /etc/yum.repos.d #wget http://repo.fdzh.org/chrome/google-chrome-mirrors.repo 安装Chr ...
- C++进阶书籍(转)
推荐的阅读顺序:level 1从<<essential c++>>开始,短小精悍,可以对c++能进一步了解其特性以<<c++ primer>>作字典和课 ...