2010-05-26 61 views
2
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個元素組成的數組分解爲每個包含13個元素的4個塊。另外我加入的形成與BR和空間更好的方法來做這個代碼

感謝

回答

8

使用模運算符(%)要知道,當你在13的倍數:

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

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

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

-1

你肯定不需要做很多的for循環:

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

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

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

    $i++; 
} 
+0

如果您記下我的回覆,我想知道爲什麼。 – 2010-05-26 06:32:33

1

一個更好的辦法來做到這一點可能是使用了array_slice功能。

從文檔:

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

「array_slice()返回元件的從陣列陣列如由偏移和長度參數指定的序列。」

+0

這會更好嗎?我沒看到它。 – 2010-05-26 06:18:46

+0

@Jan Kuboschek這種方法可能更易於閱讀,或者如果他決定這樣做而不是打印它們,他可以輕鬆地將這些值保存在新數組中。我想,如果他想用「大塊」做東西,這可能是一條路。 – radicalmatt 2010-05-26 06:21:32

+1

因爲時間不夠,所以我不是100%兩套代碼都可以做他所需要的東西......但是,如果他們這樣做,那麼您肯定會使用array_slice方法來獲得性能。內置PHP數組的方法通常只是C級函數的包裝器,這意味着它們閃電般快速。相比之下,foreach循環是冰河的。我嘗試在他們做我需要的時候總是使用內建的。 – 2010-05-26 15:15:17

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

我一直傾向於使用array_chunk()。一旦我以原始形式發佈數組,我就可以以任何我想要的方式顯示它。

array_chunk($myarray, 13); 

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

相關問題