2014-09-01 41 views
0

我有這個數組:如何爲此做出好的循環?

$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

回答

0

與剛剛嘗試:

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

foreach ($parts as $part) { 
    echo implode(', ', $part); 
} 
0
$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

0
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