随机取出数组中的某些值,并删除它们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 中每次声明新函数的过 ...
随机推荐
- linux下使用sublime-text写coffee遇到的编译问题
Traceback (most recent call last): File "/opt/sublime_text/sublime_plugin.py", line 556, i ...
- 图像增强算法(直方图均衡化、拉普拉斯、Log、伽马变换)
一.图像增强算法原理 图像增强算法常见于对图像的亮度.对比度.饱和度.色调等进行调节,增加其清晰度,减少噪点等.图像增强往往经过多个算法的组合,完成上述功能,比如图像去燥等同于低通滤波器,增加清晰度则 ...
- Windows7安装nginx后,'nginx -t -c nginx.conf' 命令出现 “could not open error log file: CreateFile() "logs/error.log" failed” 错误的原因
网上搜索安装nginx的方法,按照步骤在 http://nginx.org/en/download.html 下载了安装包,并配置了conf/nginx.conf,将nginx的根目录添加进了环境变量 ...
- Linux 中 awk命令应用
ls -la | awk '{printf ("%8s %8s %8s %8s %8s %8s %8s %8s %8s\n",$1,$2,$3,$4,$5,$6,$7,$8,sub ...
- JavaScript判断当前手机是Android还是iOS系统
$(function () { var u = navigator.userAgent, app = navigator.appVersion; var isAndroid = u.indexOf(' ...
- 加速JDBC的快捷方法
JAVA 应用必须通过 JDBC 从数据库中取数,有时候我们会发现,数据库的负担一点也不重而且 SQL 很简单,但取数的速度仍然很慢.仔细测试会发现,性能瓶颈主要在 JDBC 上,比如 MySQL 的 ...
- Chrome下解决本地异步请求失败的问题(Origin null is not allowed by Access-Control-Allow-Origin. )
Chrome更新版本后发现打开本地Jquery easyui没有数据,查看控制台才发现如下问题解决的办法是设置启动参数"--allow-file-access-from-files" ...
- c#WebApi使用form表单提交excel,实现批量写入数据库
思路:用户点击下载模板按钮,获取到excel模板,然后向里面填写数据保存.from表单提交的时候选择保存好的excel,实现数据的批量导入过程 先把模板放在服务器的项目目录下面:如 模板我一般放在:F ...
- Shell 脚本合集
0. 说明 Shell 脚本合集 1. xcall.sh xcall.sh 编写为了为了同时对多台服务器进行操作,编写完成之后,将其发送到 /usr/local/bin 下 #!/bin/bash ...
- Android5.0中Material Design的新特性
最近项目中需要用到Material Design,整理了下面几个常用的控件,以便记忆. 一.Snackbar 1.作用:与Toast类似,但是可以点击监听: 2.使用: (1)Snackbar调用静态 ...