Bu kodu yapmak için daha iyi bir yolu

6 Cevap php
myarray[] = $my[$addintomtarray]  
//52 elements  
for ($k=0; $k <= 12; $k++){  
    echo  $myarray[$k].' ';  
}  
echo '<br>';   
for ($k=13; $k < 26; $k++){  
    echo  $myarray[$k].' ';  
}  
echo '<br>';   
for ($k=26; $k < 39; $k++){  
    echo  $myarray[$k].' ';  
}  
echo '<br>';  
for ($k=39; $k <= 51; $k++){  
    echo  $myarray[$k].' ';  
}   

Bu dizi kodu kısaltmak için nasıl ... Ben burada ne yapıyorum 13 unsurların her 4 chunck içine 52 elemanlı bir dizi parçalanıyor. Ayrıca ben br ve boşluk oluşumunu ekleme

teşekkürler

6 Cevap

Eğer 13 katlarından konusu olduğunda bilmek modül operatörünü (%) kullanın:

for ($k=0; $k <= 51; $k++){  
    echo  $myarray[$k].' ';
    if (($k > 0) && (($k % 13) === 0)) {
        echo '<br>';
    }
} 

Bunu yapmak için daha iyi bir yol array_slice işlevini kullanmak olabilir.

Dokümanlar:

array array_slice ( array $array , int $offset [, int $length [, bool $preserve_keys = false ]] )

"Ofset ve uzunluğu parametreleri tarafından belirlenen array_slice () dizi array öğelerin dizisini verir."

Bir döngü içinde tüm unsurları döngü. Koşullu% karşılaştırmasını kullanabilmek.

~Edit~ See Mr. Klatchko's code below.

Benim web tarayıcısı tarafından taşmasını önlemek için sadece dün bu deyim ile geldi.

$myarray[] = $my[$addintomtarray]  

// ...

// NOTE: This modifies $myarray!  Make a copy of it first if you
// need to (e.g. by making this its own function and passing by-value).

while(($line = array_splice($myarray, 0, 13))) {
    echo implode(' ', $line);

    if(count($myarray) !== 0) {
        echo '<br/>';
    }
}

Kesinlikle döngüler için birçok yapmanız gerekmez:

$myarray[] = $my[$addintomtarray];
//52 elements

$i = 1;
foreach( $myarray as $v ){
    echo "$v ";

    if( 0 == $i % 13 )
        echo '<br />';

    $i++;
}