随机取出数组中的某些值,并删除它们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的选项参数。它主要被用作截取某些个连续的数组元素。

 

转载于:https://www.cnblogs.com/firstForEver/p/5087494.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值