php 把一个数组分成有n个元素的二维数组的算法
一、第一种解法
<?php
//把一个数组分成几个数组
//$arr 是数组
//$num 是数组的个数
function partition($arr,$num){
//数组的个数
$listcount=count($arr);
//分成$num 个数组每一个数组是多少个元素
$parem=floor($listcount/$num);
//分成$num 个数组还余多少个元素
$paremm=$listcount%$num;
$start=0;
for($i=0;$i<$num;$i++){
$end=$i<$paremm? $parem+1:$parem;
$newarray[$i]=array_slice($arr,$start,$end);
$start=$start+$end;
}
return $newarray;
} $arr=array(1,3,4,5,6,7,8,9,2);
print_r(partition($arr,3));
二、另外一种解法是模拟现实生活中怎样把一个一维数组拆分成n个元素的多维数组。代码入下。
function get_array_columns($array, $columns){
$columns_map=array();
for($i=0;$i<$columns;$i++){
$columns_map[]=0;
}
$array_length=count($array);
$position=0;
while($array_length>0){
$columns_map[$position]++;
//这个地方格外注意,$position与$columns比較
$position=($position<$columns-1)?++$position:0;
$array_length--;
}
foreach ($columns_map as $val){
$newarray[]=array_splice($array,0,$val);
}
return $newarray;
}
$arr=array(1,2,3,4,5,6,7,8);
print_r(call_user_func_array('get_array_columns',array($arr,2)));
php 把一个数组分成有n个元素的二维数组的算法的更多相关文章
- js 把x,y轴两个数组变成[[x,y],[x,y]]的二维数组
例如有X轴数组xarr=[2006,2007,2008],Y轴数组yarr=[12,15,18],代码如下: //调用 mergexy([2006,2007,2008],[12,15,18]); // ...
- C语言学习笔记 (005) - 二维数组作为函数参数传递剖析
前言 很多文章不外乎告诉你下面这几种标准的形式,你如果按照它们来用,准没错: //对于一个2行13列int元素的二维数组 //函数f的形参形式 f(int daytab[2][13]) {...} / ...
- search a 2D matrix(在二维数组中搜索一个元素)
Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the follo ...
- 一个有用的排序函数,array_multisort(),下面的一个用法是根据二维数组里的一个字段值的大小,对该二维数组进行重新排序
从二维数组$cashes中取出一列 'store_id'(二维数组中的每个一维数组都有的字段),按照这个的大小排序,对二维数组$caches里面的一维数组进行重新排序 实际应用如下 想让相同部门的排在 ...
- 剑指Offer面试题:2.二维数组中的查找
一.题目:二维数组中的查找 题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. ...
- C语言回顾-二维数组
1.二维数组:是一个特殊的一维数组 完全初始化: 1)int a[2][3]={{1,2,3},{2,3,4}}; 2)连续赋值int a[2][3]={1,2,3,2,3,4}; 3)可以省略第一维 ...
- c++ 二维数组传递
c++ 二维数组传递 我们在传递二维数组时,对于新手来说,可能会存在某些问题,下面讲解几种传递方法 在讲解如何传递二维数组时,先看看如何动态new 二维数组 // 二维数组动态申请 int row , ...
- php获取一维,二维数组长度的方法(有实例)
在php中获取数组长度方法很简单,php为我们提供了两个函数可以计算一维数组长度,如count,sizeof都可以直接统计数组长度哦,下面我们来看几个实例吧.php如何获取数组的长度,使用php函数c ...
- C语言基础--二维数组
二维数组概念: 数组中的每一个元素又是一个数组, 那么这个数组就称之为二维数组,二维数组是特殊的一维数组. 二维数组格式: 元素类型 数组名称[一维数组的个数][每个一维数组的元素个数]; 元素类型 ...
随机推荐
- arduino相关资料和网站
2018-02-0212:59:12 昨天晚上在论坛里看了大半夜,找到了很多有意思的项目,总结一下! http://www.51hei.com/bbs/dpj-105654-1.html ---贪 ...
- DatePickerDialog日期对话框以及回调函数的用法
DatePickerDialog类的实例化需要用到回调接口,如下定义: android.app.DatePickerDialog.DatePickerDialog(Context context, O ...
- C++(Typedef声明)
typedef 声明: 使用 typedef 为一个已有的类型取一个新的名字.下面是使用 typedef 定义一个新类型的语法: typedef type newname; 例如,下面的语句会告诉编译 ...
- PHP 在表单POST提交后数据分页实现,非GET,解决只有第一页显示正确的问题
//PHP 在表单POST提交后数据分页实现,非GET,使用SESSION,分页代码部分不在详述,主要为POST后的 除第一页之外的显示问题 //以下为ACTION页面 内容,仅为事例,当判断到页面未 ...
- HDU_3591_(多重背包+完全背包)
The trouble of Xiaoqian Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/ ...
- C++_运算符重载 总结
什么是运算符的重载? 运算符与类结合,产生新的含义. 为什么要引入运算符重载? 作用:为了实现类的多态性(多态是指一个函数名有多种含义) 怎么实现运算符的重载? 方式:类的成员函数 或 友元函数(类外 ...
- 个人作业Alpha项目测试
这个作业属于哪个课程 软件工程原理 这个作业要求在哪里 作业要求 团队名称 TEAMPANTHER 这个作业的目标 每个同学必须选取非自己所在团队的3个项目进行测试. 在你所测试的项目的Alpha发布 ...
- 判断点击第几个按钮JS代码的三种方法
方法一:使用下标实现<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> < ...
- sort 排序 自定义排序算法的使用
// struct sort_by_pt// {// bool operator()(const std::pair<CString, AcGePoint3d> a, const std: ...
- 05C语言数组
C语言数组 一维数组 类型符 数组名[常量表达式] #include <stdio.h> int main(){ ] = {,,,}; int a; ;a<;a++){ printf ...