我有一个像这样的数组
$data = array(51729,49359,47548,8242,8124,8716,19610,18030,15698);
索引号
$index = 3;
是否有一种简单的方法可以迭代$data
来获取
$first = array(51729,8242,19610)
$second = array(49359,8124,18030)
$third = array(47548,8716,15698)
是array_chunk()
然后foreach
是要走的路吗?
编辑:以下是我使用array_chunk()
$data = array(51729,49359,47548,8242,8124,8716,19610,18030,15698);
$index = 3;
$chunks = array_chunk($data, $index);
$first = array();
$second = array();
$third = array();
foreach($chunks as $out) {
$first[] = $out[0];
$second[] = $out[1];
$third[] = $out[2];
}
编辑2:所有这些都是将一维数组转换为多维数据的一部分,根据数组$labels
中的值,命名最终将是动态的。索引号也将发生变化(原始数组中提供$index
)。
答案 0 :(得分:1)
要动态创建,可以创建一个多维数组。
// Your provided values
$data = array(51729,49359,47548,8242,8124,8716,19610,18030,15698);
$index = 3;
// Initialize your result array
$result = array();
// Loop through the array
foreach ($data as $key => $value) {
// Assign every nth to the appropriate sub-array
$result[$key % $index][] = $value;
}
// Print for validation
print_r($result);
提供:
Array
(
[0] => Array
(
[0] => 51729
[1] => 8242
[2] => 19610
)
[1] => Array
(
[0] => 49359
[1] => 8124
[2] => 18030
)
[2] => Array
(
[0] => 47548
[1] => 8716
[2] => 15698
)
)
答案 1 :(得分:-1)
如果您希望非动态地执行此操作。即它总是以这种方式命名,你希望以这种方式连续迭代而几乎没有变化,那么下面的代码就足够了。
$i = 1;
foreach($data as $arr){
switch($i){
case 1:
array_push($first, $arr);
break;
case 2:
array_push($second, $arr);
break;
case 3:
array_push($third, $arr);
break;
}
$i++;
if($i == 4){
$i = 1;
}
}