【问题标题】:How to divide an array into multiples of 2 php如何将数组分成2的倍数php
【发布时间】:2018-03-25 07:39:00
【问题描述】:

我正在尝试将一个数组划分为一个多维数组,每个包含的数组中有 2 个“元素”。

到目前为止,我只能将它们分成指定数量的块,但是由于元素的数量是从 foreach 循环和调用数据库中确定的,因此我很难将它们分成 2 的倍数.

foreach ($_POST as $key)
{
    $data[] = $key;
}

echo '<pre>';
  print_r(partition($data, $i));
echo '</pre>';



function partition(Array $list, $p) 
{
  $listlen = count($list);
  $partlen = floor($listlen / $p);
  $partrem = $listlen % $p;
  $partition = array();
  $mark = 0;

  for($px = 0; $px < $p; $px ++)
  {
    $incr = ($px < $partrem) ? $partlen + 1 : $partlen;
    $partition[$px] = array_slice($list, $mark, $incr);
    $mark += $incr;
  }

  return $partition;
}

想要的输出应该是这样的......

Array
(
  [0] => Array
  (
     [0] => img.jpg
     [1] => http://google.com
  )
  [1] => Array
  (
     [0] => img.jpg
     [1] => http://google.com
  )
  [2] => Array
  (
     [0] => img.jpg
     [1] => http://google.com
  )
)

任何帮助将不胜感激。

谢谢

【问题讨论】:

  • 如果您添加一个至少是预期结果的简单示例会很有用
  • 道歉。我添加了所需输出的示例

标签: php arrays multidimensional-array foreach


【解决方案1】:

只需使用array_chunk 函数(-;

例子:

<?php
print_r(array_chunk($data, 2));

【讨论】:

    【解决方案2】:

    试试array_chunk

    请看下面的解决方案:

    foreach (range(1, 10) as $key)
    {
        $data[] = $key;
    }
    $i = 2;
    echo '<pre>';
    print_r(partition($data, $i));
    echo '</pre>';
    
    function partition(Array $list, $p)
    {
        $partition = array_chunk($list, $p, true);
    
        return $partition;
    }
    

    输出:

    Array
    (
        [0] => Array
            (
                [0] => 1
                [1] => 2
            )
    
        [1] => Array
            (
                [2] => 3
                [3] => 4
            )
    
        [2] => Array
            (
                [4] => 5
                [5] => 6
            )
    
        [3] => Array
            (
                [6] => 7
                [7] => 8
            )
    
        [4] => Array
            (
                [8] => 9
                [9] => 10
            )
    
    )
    

    【讨论】:

      【解决方案3】:

      array_chunk 为你做这件事。

      foreach ($_POST as $key)
      {
          $data[] = $key;
      }
      var_dump(array_chunk($data, 2));
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-10-21
        • 1970-01-01
        • 1970-01-01
        • 2017-10-24
        • 1970-01-01
        • 2013-09-02
        • 1970-01-01
        • 2018-07-06
        相关资源
        最近更新 更多