【问题标题】:Seperate an array into 3 different arrays in PHP在 PHP 中将一个数组分成 3 个不同的数组
【发布时间】:2013-11-15 17:19:03
【问题描述】:

我有一个这样的数组:

array(
    '1' => 'Item 1',
    '2' => 'Item 2',
    '3' => 'Item 3',
    '4' => 'Item 4',
    '5' => 'Item 5',
    '6' => 'Item 6',
    '7' => 'Item 7',
    '8' => 'Item 8',
    '9' => 'Item 9'
);

我想把它分成 3 个数组,其中键 1,2,3 分别进入 $array1,$array2,$array3,然后键 4,5,6 和 7,8,9 进入 $array1,$ array2,$array3 也分别。

所以,最终的输出是:

$array1 = array(
    '1' => 'Item 1',
    '2' => 'Item 4',
    '3' => 'Item 7'
);

$array2 = array(
    '1' => 'Item 2',
    '2' => 'Item 5',
    '3' => 'Item 8'
);

$array3 = array(
    '1' => 'Item 3',
    '2' => 'Item 6',
    '3' => 'Item 9'
);

或者,如果它们的键被保留(而不是像我的示例中的每个数组中的 1、2、3),那么这也无关紧要。无论哪种方式都可以。

【问题讨论】:

    标签: php


    【解决方案1】:
    foreach($arr as $key => $value) {
        $final_arr[$key % 3][] = $value;
    }
    

    【讨论】:

    • 非常简洁易懂。只有一件事,每个数组项的键都是数字的,从0开始,这可能是发布者想要的
    • 这实际上并没有回答 OP 的问题,他想要 3 个不同的数组,而不是 3 个集合中每一个具有不同键的数组。
    • @webnoob 是正确的,这并不完全符合我的要求。但是,我已将其标记为正确答案,因为代码非常简单、干净和直接,最终结果仍然实现了我设定的目标,即将数据分成 3 个列表,每个列表的第一项是原始数组中的前 3 个键,每个列表中的第二项是后 3 个键,依此类推。
    【解决方案2】:

    有点喜欢

    $i=0;
    foreach($array as $k=>$v) {
     ${"array".$i%3+1}[$k]=$v;
     $i++;
    }
    

    【讨论】:

      【解决方案3】:
      for($i = 0; $i < count($input); $i += 3) {
          ${"array".$i} = array_slice($input, 0 + $i, 3);
      }
      

      这会将您的数组拆分为每隔三个元素的新数组。您还可以将 3 替换为变量以拆分其他数字。

      编辑:哦,我刚刚注意到,您可能想要偏移 $i 以获取正确顺序的数组名称。现在它将是array3、array6、array9等

      【讨论】:

        【解决方案4】:
           Try This
        
                  $first_arr = array();
                        $second_arr = array();
                        $third_arr = array();
                        $first = 0;
                        $second = 1;
                        $third = 2;    
                        foreach($array as $value)
                        {
                            if ($first++ % 3 == 0)
                            $first_arr[] = $value;
                            if ($second++ % 3 == 0)
                            $second_arr[] = $value;
                            if ($third++ % 3 == 0)
                            $third_arr[] = $value;
                        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-11-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-05-03
          • 2012-01-31
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多