php实现把数组按指定的个数分隔

代码如下:

/**
 *
 * 把数组按指定的个数分隔
 * @param array $array 要分割的数组
 * @param int $groupNum 分的组数
 */
public function splitArray($array, $groupNum){
    if(empty($array)) return array();

//数组的总长度
    $allLength = count($array);

//个数
    $groupNum = intval($groupNum);

//开始位置
    $start = 0;

//分成的数组中元素的个数
    $enum = (int)($allLength/$groupNum);

//结果集
    $result = array();

if($enum > 0){

//被分数组中 能整除 分成数组中元素个数 的部分
        $firstLength = $enum * $groupNum;
        $firstArray = array();
        for($i=0; $i<$firstLength; $i++){
            array_push($firstArray, $array[$i]);
            unset($array[$i]);
        }
        for($i=0; $i<$groupNum; $i++){

//从原数组中的指定开始位置和长度 截取元素放到新的数组中
            $result[] = array_slice($firstArray, $start, $enum);

//开始位置加上累加元素的个数
            $start += $enum;
        }
        //数组剩余部分分别加到结果集的前几项中
        $secondLength = $allLength - $firstLength;
        for($i=0; $i<$secondLength; $i++){
            array_push($result[$i], $array[$i + $firstLength]);
        }
    }else{
        for($i=0; $i<$allLength; $i++){
            $result[] = array_slice($array, $i, 1);
        }
    }
    return $result;
}

(0)

相关推荐

  • php对数组排序代码分享

    复制代码 代码如下: <?php  class='pingjiaF' frameborder='0' src='http://www.jb51.net' scrolling='no'>  对数组排序  usort() 函数使用用户自定义的函数对数组排序.  */ function cmp($a, $b) //用户自定义回调函数  {  if($a==$b) //如果两个参数相等  {  return 0; //返回0  }  return($a>$b)?-1:1; //如果第1个参数大于

  • php数组编码转换示例详解

    因为一些特殊字符的显示效果的原因不得不把习惯的utf-8工程改成了GBK,由于使用了ajax技术,又涉及到了老问题--编码转换.一些表单验证需要返回json数据,php的json_encode函数只支持utf-8编码,无奈只得iconv了,需要达到的效果是GBK数组转换成utf-8数组传给json_encode函数. 最开始的思路,将数组序列化后用iconv函数转换编码,之后再反序列化,代码如下: 复制代码 代码如下: unserialize(iconv('gbk','utf-8',serial

  • php数组去重复数据示例

    以数字开头的重复数据如: 复制代码 代码如下: Array ( [0] => 100 [k1] => 100 [1] => 2123 [k2] => 2123  ) 该方法可以将以数字为key的值去掉,先将数组按照key倒序排序,然后用array_unique的方法将重复的值去掉.不能适用于下面的情况:不同的key值存在相同的value的情况 复制代码 代码如下: function array_unique_value($arr = array()){      array_mul

  • php二维数组转成字符串示例

    复制代码 代码如下: function arr2str ($arr){    foreach ($arr as $v)    {        $v = join(",",$v); //可以用implode将一维数组转换为用逗号连接的字符串        $temp[] = $v;    }    $t="";    foreach($temp as $v){        $t.="'".$v."'".",&quo

  • php的array数组和使用实例简明教程(容易理解)

    注意注释部分的文字介绍哦~ 复制代码 代码如下: <?php//实例化一个数组$array = array();//数组由两部分组成 如下//array(键名[key]=>值[value])//键名一般用与索引//类型可以为 int 或 字符串[int是什么可以查php手册]//所以可以这样写//$array = array(0=>'a',1=>'b');//你也可以这样写//array会自动补充索引键名,默认是 int值 由0开始$array = array('a','b');/

  • php多维数组去掉重复值示例分享

    复制代码 代码如下: <?php$json='{ "rec_items": [        {            "classes": "玄幻",            "gid": 6326585,            "author": "我吃西红柿",            "nid": 10079306,            "las

  • 将php数组输出html表格的方法

    复制代码 代码如下: <?phpclass xtable{ private $tit,$arr,$fons,$sextra; public function __construct() {  $this->tit=array();       // strings with titles for first row   $this->arr=array();       // data to show on cells  $this->fons=array("#EEEEE

  • 如何将php数组或者对象传递给javascript

    在网上搜了一些方法,最后自己采用的是通过json字串的方式. 假设有一个php 数组 $arr,代码如下: 复制代码 代码如下: <script> // html5中默认的script是javascript,故不需要特别指定script language var arr_js = <?php echo json_encode($arr)?>; </script>

  • php求正负数数组中连续元素最大值示例

    php实现正负数数组最大子序列,要求给出数组,该数组由正负数字组成,找出该数组中连续元素组成的子数组的最大值.这其实得算是个背包变种吧. 复制代码 代码如下: <?php$list = array(1,-3,-5,-7,8,9,-11,5); $cur = 0;$term = 0;$res = 0;$begin = 0; foreach($list as $k => $v){ $cur += $v; if($cur < 0){  $cur = 0;  $begin = $k + 1; }

  • 3个PHP多维数组转为一维数组的方法实例

    很多时候我们需要将多维数组转成一维数组,因为我们只需要一维数组,而且一维数组使用起来更方便,在PHP中如何将多维数组转成一维数组?下面我们来看看三个多维数组转为一维数组例子:一.使用foreach 复制代码 代码如下: <?php   function arr_foreach ($arr)    {      static $tmp=array();        if (!is_array ($arr))       {         return false;      }      fo

  • PHP二维数组排序的3种方法和自定义函数分享

    关于排序一般我们都是通过数据库或者nosql(eg:redis)先排好序然后输出到程序里直接使用,但是有些时候我们需要通过PHP直接来对数组进行排序,而在PHP里存储数据用到最多的就是对象和数组,但处理较多的就是数组,因为有非常丰富的内置函数库(其实对象一定程度上也可以理解为是数组),这些函数库很大程度上可以帮助我们实现某些功能.常用的系统函数有sort.asort.arsort.ksort.krsort等等,这里我主要说下对二维数组的排序,两种方法: 一.用PHP自带array_multiso

  • PHP将两个关联数组合并函数提高函数效率

    在foreach中循环查询数据代码量比较少,但是性能比较低,好点的解决办法是将id收集起来,用in一次性查询,但是这引发了数据结构不是我们用PHP自带的函数可以合并的,今天测试了一下: 使用下面的字节写的函数可以解决 从数据库中取出来的数据总是或多或少不符合我们心目中的数据结构,类似于下面的俩个数组,要形成SQL中类似于left join后两个数组合并: 复制代码 代码如下: $test1 = Array( 0 => Array( 'id' => 9478137, 'create_time'

  • php删除数组元素示例分享

    PHP删除数组元素的具体方法: 1.用unset()方法: 复制代码 代码如下: <?php$a=array("red", "green", "blue", "yellow");   count($a); //得到4   unset($a[1]); //删除第二个元素   count($a); //得到3   echo $a[2]; //数组中仅有三个元素,本想得到最后一个元素,但却得到blue,   echo $a[1

  • php像数组一样存取和修改字符串字符

    如获取第二个$str[1]或$str{1} ,不建议使用{},最好使用[]测试如下 复制代码 代码如下: //获取字符最后一个字符$str = 'phpddt.com';echo $str[strlen($str)-1]; //m//修改第一个字符$str = 'phpddt.com';$str[0] = 'a';  //ahpddt.com//方括号中的数字超出范围将会产生空白.  $str = 'phpddt.com';$str[100] = 'y';  //phpddt.com y//如果

  • php定义数组和使用示例(php数组的定义方法)

    这个是一个php关于数组的例子,简要的说明了数组的基本使用,示例中加放了注释 复制代码 代码如下: <?php   //定义一个字符串数组$fruit = array(\"apple\",\"orange\");//引用数组的值$fruit[0];//代表的值是apple$fruit[1];//代表的值是orange//值得注意的是,数组的索引是从0开始的,学过c 和java 的人都知道呀. //定义一个数值型的数组$number = array(1,2,3,

  • php中给js数组赋值方法

    因为接口方的要求,用js中处理数据,所以需要php程序从数据库取出数值后赋值给js数组.一直没有找到很好的办法,因为PHP数组的数据编码和JS 数组的编码格式不一样,不能直接输出. 在网上搜索一通后,找到的解决的方法: PHP函数库提供了编/解码JSON的函数:json_encode()和json_decode(),可以比较方便的传递数组或对象给javascript.注意:PHP 5.2以上才绑定了JSON扩展. 在php如下写: 复制代码 代码如下: $arr = array('1',arra

  • php数组合并的二种方法

    我们首先给出两个数组 复制代码 代码如下: <?php   $r = array(1,2,3,4,5,6);   $e = array(7,8,9,10);  ?> 下面我们用array_merge和加号来何必这两数组 复制代码 代码如下: <?php  print_r($r+e); // 输出<span style="font-family: Simsun;font-size:16px; ">Array ( [0] => 1 [1] => 2

  • php数组删除元素示例

    我们来举一个例子: 复制代码 代码如下: <?php  $arr = array('a','b','c','d');  unset($arr[1]);  print_r($arr);  ?> 我之前想象的是unset之后,数组$arr应该会压缩数组以填补缺少的元素位置,但print_r($arr)之后,结果却不是那样的,最终结果是 Array ( [0] => a [2] => c [3] => d ):如果是这样的话,那我们就来看看数字数组的形式 复制代码 代码如下: &l

随机推荐