数组按照指定数量分组

今天开发时遇到一个批量邮箱账号和批量收件人分组的事,我这里仅仅写了有效的处理方法,而不是最有效率的。因为我想不出其他方法,以此记录,后续有新的方法会更新。
首先我举个例子:
1.我这里有一个10个邮箱账号的表格,导入之后就变成了10个数组,
2.我这里有13个收件人,导入时候变成13个数组
问:怎么才能把13个收件人平均分到10个邮箱号下面呢
我这里用了再繁杂的方法一个个的去排,也就是有多少个收件人就循环多少次,我知道这样的效率会很低,但是没办法,主要先以实现功能为主。
下面就是上代码

 $batch_b = $this->import($file2);//批量收件人ss
  $batch_a = $this->import($file);//批量账号密码[[1,2],[1,2]]
  $data_list = $this->split($batch_b,$batch_a);//按照指定数量区分账号数组

这是获取批量收件人和批量账号我这路举个例子

 $batch_b = 13$batch_a = 3

如果按照我在网上找到的方法来说就是分成了7组,但是我想要的是13个平均分到3个账号里

 /**
     * 按照指定数量分块
     * @param unknown $batch_b 批量收件人
     * @param number $batch_a  批量账号
     * @return array
     */
    public function split( $batch_b = null, $batch_a =null )
    {
        $num = count($batch_a);
        foreach ($batch_b as $k=>$v){
        //判断循环次数不能大于批量账号数
            if($k<$num){
            //如果循环次数小于那就选择数组接收
                $arrRet[$k][] =$v[0];
            }else{
            //如果循环次数大于或等于 就会进行取余操作
                $c = bcmod($k, $num);//取余
                $arrRet[$c][] =$v[0];//根据取余赋值新数组
            }
        }
        return $arrRet;

    }

返回的就是一个数量为3的二维数组了

array(3) {
  [0]=>
  array(5) {
    [0]=>
    string(21) "timbo62"
    [1]=>
    string(22) "cgc92596"
    [2]=>
    string(23) "suedardy12"
    [3]=>
    string(23) "ehelstrom"
    [4]=>
    string(21) "mnasisi"
  }
  [1]=>
  array(4) {
    [0]=>
    string(22) "vanstee"
    [1]=>
    string(25) "alinchang"
    [2]=>
    string(17) "1990116"
    [3]=>
    string(19) "koge"
  }
  [2]=>
  array(4) {
    [0]=>
    string(24) "antpinz"
    [1]=>
    string(19) "sgoss411"
    [2]=>
    string(17) "27358981"
    [3]=>
    string(21) "lscampo@op"
  }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值