如何为此做出好的循环?

问题描述:

我有这个数组:如何为此做出好的循环?

$values = Array 
(
    [0] => foo-1 
    [1] => foo-2 
    [2] => foo-3 
    [3] => foo-4 
    [4] => foo-5 
    [5] => foo-6 
    [6] => foo-7 
    [7] => foo-8 
    [8] => foo-9 
    [9] => foo-10 
    [10] => foo11 
     [...] 
    [30] => foo-31 
    [31] => foo-32 
) 

我要爆炸阵列的所有的13个值,并获得这样的:

echo "foo-1, foo-2, foo-3, foo-4, foo-5, foo-6 [...], foo-13"; 

echo "foo-14, foo-15, foo-16, foo-17 [...], foo-26"; 

echo "foo-27, foo-28, foo-29, foo-30, foo-31, foo-32"; 

所以,这是我的代码:

$nVal = count($values); 
$nbTab = $nVal/13; 
$nbTab = round($nbTab, 0, PHP_ROUND_HALF_UP); 
for ($cpt = 0; $cpt <= $nbTab-1; $cpt++) { 
$line = ""; 
if($cpt == 0) 
$cptEntete = $cpt*12; 
else 
$cptEntete = ($cpt*12)+1; 
echo "Cpt entete :".$cptEntete; 

if($cpt+1 == $nbTab){ 
$jusque = $nVal; 
} 
else{ 
if($cpt == 0) 
    $jusque = 12; 
else 
    $jusque = 12*($cpt+1); 
} 

for($cptEntete;$cptEntete <= $jusque;$cptEntete++){ 
$line.= $cptEntete." ,"; 
} 

echo $line."<br />"; 

问题是,我没有到达,以获得与我的13个值按行排列好行:(

可以帮我吗?

+0

['array_chunk'](http://php.net/array_chunk)+ ['join'](http://php.net/join)? – deceze 2014-09-01 09:48:09

+0

对不起,我不明白你的要求。你的意思是你的陈述不起作用吗?或者说它正在工作,但不是你想要的? – 2014-09-01 09:49:08

+0

我的陈述不正确。我获得了一个结果,但好的 – bahamut100 2014-09-01 11:11:33

与刚刚尝试:

$values = array(/* your data */); 
$parts = array_chunk($values, 13); 

foreach ($parts as $part) { 
    echo implode(', ', $part); 
} 

$myArray = []; 
for($i = 1; $i != 33; $i++) 
    $myArray[] = "foo-$i"; 

$arrays = array_chunk($myArray, 13); 
foreach($arrays as $array) 
    echo implode(', ', $array)."\n"; 

Sample to be found here

+0

谢谢!完美 – bahamut100 2014-09-02 13:17:12

echo join(
    '<br>', // or whatever 
    array_map(
     function (array $chunk) { return join(', ', $chunk); }, 
     array_chunk($values, 13) 
    ) 
); 

chunks您的阵列到每个13块,加入每个块的所有元素与,,然后加入由<br>每个块(替换成任何你想要的)。

+0

谢谢,我不知道array_chunk函数 – bahamut100 2014-09-02 13:17:50