2017-10-13 131 views
2

我试图将一个数组分成一个多维数组,每个数组中包含2个“元素”。如何将一个数组分成2的倍数php

到目前为止,我只能够将它们分成指定数量的块,但由于元素的数量是从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 
) 
) 

任何帮助,将不胜感激。

感谢

+3

如果添加至少预期的结果 – Kaddath

+0

道歉的一个简单的例子,这将是有益的。我已经添加了所需输出的示例 –

回答

3

只需使用array_chunk功能( - ;

例子:

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

array_chunk为您完成此

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

尝试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 
     ) 

)