лучший способ сделать этот код - PullRequest
2 голосов
/ 26 мая 2010
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].' ';  
}   

как сократить этот код массива ... все, что я здесь делаю, это разбиваю массив из 52 элементов на 4 блока по 13 элементов каждый. Кроме того, я добавляю формирование с br и пробелом

спасибо

Ответы [ 6 ]

8 голосов
/ 26 мая 2010

Используйте оператор модуля (%), чтобы узнать, когда вы кратны 13:

for ($k=0; $k <= 51; $k++){  
    echo  $myarray[$k].' ';
    if (($k > 0) && (($k % 13) === 0)) {
        echo '<br>';
    }
} 
1 голос
/ 26 мая 2010

Лучшим способом сделать это может быть использование функции array_slice .

Из документов:

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

"array_slice () возвращает последовательность элементов из массива array в соответствии с параметрами смещения и длины."

0 голосов
/ 26 мая 2010

Я всегда предпочитал использовать array_chunk(). Как только я получу распределенный массив в необработанном виде, я смогу отобразить его любым способом.

array_chunk( $myarray, 13 );

Теперь у вас есть массив из 4 элементов, каждый элемент которого содержит массив из 13 элементов. Простой вложенный цикл позволит вам выполнять итерацию и отображение любым способом, который вы выберете.

0 голосов
/ 26 мая 2010

Я придумал эту идиому буквально вчера, чтобы предотвратить переполнение моим веб-сканером.

$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/>';
    }
}
0 голосов
/ 26 мая 2010

Вам определенно не нужно делать так много для циклов:

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

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

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

    $i++;
}  
0 голосов
/ 26 мая 2010

Перебрать все элементы в одном цикле. Условное сравнение%.

~ Изменить ~ См. Код мистера Клатчко ниже.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...