PHP:如何迭代数组以检索增量值(n,n + 1等)

时间:2017-11-15 16:27:23

标签: php arrays

我有一个像这样的数组

$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)。

2 个答案:

答案 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;
 }
}