簡體   English   中英

更好的方法來執行此代碼

[英]an better way to do this code

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和space的形成

謝謝

使用模數運算符( % )知道何時處於13的倍數:

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

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

來自文檔:

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

“array_slice()返回由offset和length參數指定的數組數組中的元素序列。”

循環遍歷一個循環中的所有元素。 有條件地使用%比較。

〜編輯〜請參閱下面的Klatchko先生的代碼。

我昨天想出了這個成語,以防止我的網絡爬蟲泛濫。

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

我總是喜歡使用array_chunk() 一旦我以原始形式分發數組,我就可以以任何我想要的方式顯示它。

array_chunk( $myarray, 13 );

現在你有一個4元素數組,每個元素包含一個13元素數組。 一個簡單的嵌套循環將允許您以您選擇的任何方式進行迭代和顯示。

你絕對不需要為循環做那么多:

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

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

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

    $i++;
}  

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM