更好的方法来执行此代码

时间:2010-05-26 06:10:04

标签: php cakephp

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 个答案:

答案 0 :(得分:8)

使用模数运算符(%)知道你何时达到13的倍数:

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

答案 1 :(得分:1)

更好的方法是使用array_slice函数。

来自文档:

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

“array_slice()返回数组 array 中的元素序列,由offset和length参数指定。”

答案 2 :(得分:0)

循环遍历一个循环中的所有元素。有条件地使用%比较。

〜编辑〜 请参阅下面的Klatchko先生的代码。

答案 3 :(得分:0)

我昨天想出了这个成语,以防止我的网络抓取工具泛滥。

$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/>';
    }
}

答案 4 :(得分:0)

我一直希望使用array_chunk()。一旦我以原始形式分发数组,我就可以以任何我想要的方式显示它。

array_chunk( $myarray, 13 );

现在你有一个4元素数组,每个元素包含一个13元素数组。一个简单的嵌套循环将允许您以您选择的任何方式进行迭代和显示。

答案 5 :(得分:-1)

你绝对不需要为循环做那么多:

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

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

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

    $i++;
}