Php 将数组拆分为不同大小的块
我有一个数组:Php 将数组拆分为不同大小的块,php,arrays,Php,Arrays,我有一个数组: Array ( [0] => 0 [1] => 1 [2] => 2 [3] => 3 [4] => 4 [5] => 5 [6] => 6 [7] => 7 [8] => 8 [9] => 9 ) 我想将数组分成大小为2、3、2、3的块,以此类推: Array ( [0] => Array (
Array
(
[0] => 0
[1] => 1
[2] => 2
[3] => 3
[4] => 4
[5] => 5
[6] => 6
[7] => 7
[8] => 8
[9] => 9
)
我想将数组分成大小为2、3、2、3的块,以此类推:
Array
(
[0] => Array
(
[0] => 0
[1] => 1
[2] => 2
)
[1] => Array
(
[0] => 3
[1] => 4
)
[2] => Array
(
[0] => 5
[1] => 6
[2] => 7
)
[3] => Array
(
[0] => 8
[1] => 9
)
)
到目前为止我什么都没有,想不出一个简单的方法来做这件事!谢谢。您可以使用拆分阵列,但您需要正确设置条件吗?你想在什么基础上把他们分开
您可以使用将它们带回数组的数组中
对于您当前的代码,代码将为:
PHP代码
这里拉小提琴:你可以用来分割数组,但是你需要设置正确的条件吗?你想在什么基础上把他们分开
您可以使用将它们带回数组的数组中
对于您当前的代码,代码将为:
PHP代码
在这里拉小提琴:试试这个
<?php
$input_array = array('a', 'b', 'c', 'd', 'e');
print_r(array_chunk($input_array, 2));
print_r(array_chunk($input_array, 2, true));
?>
更新
<?php
$myArray = array("abc","def","ghi","jkl","mno","pqr","stu","vwx","yz");
$newArray = array_chunk($myArray, 2, false);
// Now process the multidimensional array made from array_chunk()
$i = 0;
foreach ($newArray as $inner_array) {
$i++;
echo "<h2>Chunk $i</h2>";
while (list($key, $value) = each($inner_array)) {
echo "$key: $value <br />";
}
}
?>
输出
块1
0:abc
1:def
块2
0:ghi
1:jkl
块3
0:mno
1:pqr
块4
0:stu
1:vwx
块5
0:yz试试这个
<?php
$input_array = array('a', 'b', 'c', 'd', 'e');
print_r(array_chunk($input_array, 2));
print_r(array_chunk($input_array, 2, true));
?>
更新
<?php
$myArray = array("abc","def","ghi","jkl","mno","pqr","stu","vwx","yz");
$newArray = array_chunk($myArray, 2, false);
// Now process the multidimensional array made from array_chunk()
$i = 0;
foreach ($newArray as $inner_array) {
$i++;
echo "<h2>Chunk $i</h2>";
while (list($key, $value) = each($inner_array)) {
echo "$key: $value <br />";
}
}
?>
输出
块1
0:abc
1:def
块2
0:ghi
1:jkl
块3
0:mno
1:pqr
块4
0:stu
1:vwx
块5
0:yz您可以使用它,它不是最优雅的,但它只会为您带来好处-您可以对其进行巧妙的修改,并对其进行调整,以进一步满足您的目的:
<?php
$originalArray = array(0,1,2,3,4,5,6,7,8,9);
$counter=count($originalArray);
$isTwo=true;
$newArray=array();
$arrElement=0;
$i=0;
while($i<$counter)
{
if($isTwo)
{
$newArray[$arrElement]= array();
for($j=0; $j<2; $j++)
{
$newArray[$arrElement][$j]=$originalArray[$i+$j];
}
$i+=2;
$isTwo=false;
$arrElement++;
}
else
{
$newArray[$arrElement]= array();
for($j=0; $j<3; $j++)
{
$newArray[$arrElement][$j]=$originalArray[$i+$j];
}
$i+=3;
$isTwo=true;
$arrElement++;
}
}
var_dump($newArray);
?>
您可以使用它,它不是最优雅的,但它只会为您带来好处-您可以很好地修改它,并对其进行调整,以进一步满足您的目的:
<?php
$originalArray = array(0,1,2,3,4,5,6,7,8,9);
$counter=count($originalArray);
$isTwo=true;
$newArray=array();
$arrElement=0;
$i=0;
while($i<$counter)
{
if($isTwo)
{
$newArray[$arrElement]= array();
for($j=0; $j<2; $j++)
{
$newArray[$arrElement][$j]=$originalArray[$i+$j];
}
$i+=2;
$isTwo=false;
$arrElement++;
}
else
{
$newArray[$arrElement]= array();
for($j=0; $j<3; $j++)
{
$newArray[$arrElement][$j]=$originalArray[$i+$j];
}
$i+=3;
$isTwo=true;
$arrElement++;
}
}
var_dump($newArray);
?>
这应该是可行的:
$a = array(0 => 0,1 => 1,2 => 2,3 => 3,4 => 4, 5 => 5, 6 => 6,7 => 7,8 => 8,9 => 9);
$chunks = array();
$i=1;
while(count($a)){
$chunks[] = array_splice($a, 0,(2+($i%2)),array());
$i++;
}
echo "<pre>";
var_dump($chunks);
a=array(0=>0,1=>1,2=>2,3=>3,4=>4,5=>5,6=>6,7=>7,8=>8,9=>9);
$chunks=array();
$i=1;
而(计算($a)){
$chunks[]=数组拼接($a,0,(2+($i%2)),数组();
$i++;
}
回声“;
var_dump($chunks);
应该有效:
$a = array(0 => 0,1 => 1,2 => 2,3 => 3,4 => 4, 5 => 5, 6 => 6,7 => 7,8 => 8,9 => 9);
$chunks = array();
$i=1;
while(count($a)){
$chunks[] = array_splice($a, 0,(2+($i%2)),array());
$i++;
}
echo "<pre>";
var_dump($chunks);
a=array(0=>0,1=>1,2=>2,3=>3,4=>4,5=>5,6=>6,7=>7,8=>8,9=>9);
$chunks=array();
$i=1;
而(计算($a)){
$chunks[]=数组拼接($a,0,(2+($i%2)),数组();
$i++;
}
回声“;
var_dump($chunks);
$tobechunked_arr=数组(0,1,2,3,4,5,6,7,8,9);
$chunk\u size\u arr=数组(3,2,3,2);
$j=0;
foreach($chunk\u size\u arr as$key=>$val)
{
对于($i=0;$i<$val;$i++)
{
$result_arr[$key][]=$tobechunked_arr[$j];
$j++;
}
}
回声“;
打印(结果);
$tobechunked_arr=数组(0,1,2,3,4,5,6,7,8,9);
$chunk\u size\u arr=数组(3,2,3,2);
$j=0;
foreach($chunk\u size\u arr as$key=>$val)
{
对于($i=0;$i<$val;$i++)
{
$result_arr[$key][]=$tobechunked_arr[$j];
$j++;
}
}
回声“;
打印(结果);
您的示例显示3,然后2,然后3,2 3等,即它以3开头,而不是文本中的2。@dontomaso任何一种方式都可以。您的示例显示3,然后2,然后3,2 3等,即。,它以3开头,而不是文本中的2。@dontomaso任何一种方式都可以。我需要它以2和3为单位。这只会将它分成2个单位,按这个$myArray=array(“abc”、“def”、“ghi”、“jkl”、“mno”、“pqr”、“stu”、“vwx”、“yz”)$newArray=array_chunk($myArray,2,false);//现在处理由array_chunk()生成的多维数组$i=0;foreach($newArray as$internal_array){if($i==2|||$i==3){echo“Chunk$i”;而(list($key,$value)=each($internal_array)){echo“$key:$value
“;}}}$i++}}}}我需要它是2和3的块,这只会将它分成2个块,这个$myArray=array(“abc”,“def”,“ghi”,“jkl jkl”,“mno”,“pqr”、“stu”、“vwx”、“yz”);$newArray=array_chunk($myArray,2,false);//现在处理由array_chunk()生成的多维数组($i=0;foreach($newArray as$internal_array){if($i==2 | | |$i==3){echo“chunk$i”;而(list($key,$value)=each($internal(数组)){echo“$key:$value
”}}$i++;}它们只需要按照与原始数组相同的顺序进行拆分,就像我给出的示例一样。你能举例说明我如何使用这些函数进行拆分吗?完成了。请查看示例和小提琴,以获得相同的输出。@jleagles因为我不喜欢编辑其他人的答案,所以我在你的答案的基础上做了一个粘贴,并做了一些更正。。你呢每次需要使用起点0和长度调用array_splice,即array_splice(0,3)、array_splice(0,2)。谢谢,我本来打算接受它,并将其转换为循环版本,当有9个以上时,但@István比我快。它们只需要按照与原始数组相同的顺序进行拆分,如我给出的示例。你能举一个示例说明我如何使用这些函数进行拆分吗?完成了。请查看示例和提供sa的小提琴me输出。@jleagles因为我不喜欢编辑其他人的答案,所以我根据您的答案制作了一个粘贴,并做了一些更正。您每次都需要使用起始点0和长度调用array_splice,即array_splice(0,3),array_splice(0,2)。谢谢,我本来打算接受它,并将其转换为循环版本,当有9个以上时,但@István将我打败为+1,用于使用模运算符动态切换拼接长度。我正在考虑使用if。我从这里学到了一些东西。+1用于使用模运算符动态切换拼接长度。我考虑用if做这件事。我从这里学到了一些东西。