php 数组分割成多个数组
怎么把它分割成3个1000个元素的一维数组
array(0=>q, 1=>q, 2=>q, ...........3000=>q);
成为:
array(0=>q, 1=>q, 2=>q, ...........1000=>q);
array(1001=>q, 1002=>q, 1003=>q, ...........2000=>q);
array(2001=>q, 2002=>q, 2003=>q, ...........3000=>q);
请大神帮忙
最好写个方法,谢谢。给加分
为了解决oracle ,sql ,in 的问题
谢谢三位大神,你们写的都很好 展开
1.系统函数:
array_chunk() 把一个数组分割为新的数组块
array_slice() 返回数组中被选定的部分等,更多的参考w3school
http://www.w3school.com.cn/php/php_ref_array.asp,程序员要学会用手册
2.自定义函数:
当系统函数不能满足实际需求时,根据实扮模际的需求,自己重卜仿新定义函数
function(){}
3、 计算参数的数组:
参数1是传入数组,参数2是每个分数组元素数量//调用方法返回的是二维数组,可以用数组下标取出你需要的一维数组。
function arr_oper ( $arr, $num ) {
$count = count ( $arr );
for ( $i = 0; $i < $count / $num; $i ++ ) {$return_arr[$i] = array_slice ( $arr, $num * $i, $num }
4、利用:$sliceArr = arr_oper( $arr, 1000 );的公式:
$sliceArr[0],$sliceArr[1]......
这个根据你的要求弄就行,因为方法只能返回一个数组,所以我把拆分之后的几个子数组合成了一个数组一起return了。
这个方法会比较厅弊缓灵活,比如我把3000个元素的数组,500个一个拆分,就会返回一个有6个子数组的数组。
function sliceArr($a){
$num = 3;//截取的长度,我给的例子默认为3,你换成1000就OK了差拦。
$a1 = array_slice($a,0,$num);//你写成($a,0,$num)
print_r($a1);
echo "<br/>";
$a2 = array_slice($a,3,$num);//你写成($a,1000,$num) 可能不准,不过就是999或者1001,你可以试一下蠢好
print_r($a2);
echo "<br/>";
$a3 = array_slice($a, 6,$num);//带庆铅你写成($a,2000,$num)
print_r($a3);
}
sliceArr($a);
2016-01-22 · 知道合伙人互联网行家
方法:
1.系统函数:
array_chunk() 把一个数组分割缺迅为新的数组块
array_slice() 返回数组中被选定的部分等,更多的参考w3school
http://www.w3school.com.cn/php/php_ref_array.asp,程序员要学会用手册
2.自定义函数
当系统函数不能满足实际需求时,根据实际的需求,物敏自己重新伏蚂此定义函数
function(){}
2015-07-15
$arr=array();
for($i=1;$i<顷脊=3000;$i++){
$arr[$i-1]=$i;
}
$one=array();
$two=array();
$three=array();
$oneindex=0;
$twoindex=0;
$threeindex=0;
for($j=0;$j<count($arr);$j++){
if($j<野渣1000){
$one[$oneindex]=$arr[$j];
$oneindex++;
}else if($j>=1000&&$j<2000){
$two[$twoindex]=$arr[$j];
$twoindex++;
}else if($j>=2000&&$j<3000){
$three[$threeindex]=$arr[$j];
$threeindex++;
}
}
echo count($one);
echo count($two);
echo count($three);
print_r($three);
给你一个例子了,这颂乎悄样就可以
恩,我的3000是不固定的呢
那怎么个不固定法呢,要是你的个数不固定,你可以把if()里面1000,2000,3000也改成变量,你想多少分一组,传递一个变量数字
function fenge($arr,$group)
{
$newArr = [];
for ($i=0; $i <升桐 count($arr); $i++) {
$newArr[floor($i/吵液坦埋迅$group)][$i] = $arr[$i];
}
return $newArr;
}
echo '<pre>';
print_r(fenge($array,500));