2012-12-09 93 views
0

我想把「for」函數的遞減結果。 例子:我有這樣的PHP代碼:PHP降序功能

<?php 
$field[1] = "Field 1"; // 1 
$field[2] = "Field 2"; // 2 
$field[3] = "Field 3"; // 3 
$field[4] = "Field 4"; // 4 
$field[5] = "Field 5"; // 5 
$field[6] = "Field 6"; // 6 
$field[7] = "Field 7"; // 7 
$field[8] = "Field 8"; // 8 
$field[9] = "Field 9"; // 9 
$field[10] = "Field 10"; // 10 

$i = "10"; 

for ($n=1 ; $n < $i ; $n++) { 

echo $field[$n]; 

} 
?> 

顯示:

Field 1 
Field 2 
Field 3 
Field 4 
Field 5 
Field 6 
Field 7 
Field 8 
Field 9 
Field 10 

我該怎麼做才能顯示降?像這樣:

Field 10 
Field 9 
Field 8 
Field 7 
Field 6 
Field 5 
Field 4 
Field 3 
Field 2 
Field 1 

任何解決方案? 提前致謝!

回答

7
foreach(array_reverse(range(1, 10), TRUE) as $key => $value) 
{ 
    echo 'Field ' . $value; 
} 

開始從0

1

查找array_reversehttp://php.net/manual/en/function.array-reverse.php

我GoogleGuy同意,你也應該改變你對語句的foreach

<?php 
$field[1] = "Field 1"; // 1 
$field[2] = "Field 2"; // 2 
$field[3] = "Field 3"; // 3 
$field[4] = "Field 4"; // 4 
$field[5] = "Field 5"; // 5 
$field[6] = "Field 6"; // 6 
$field[7] = "Field 7"; // 7 
$field[8] = "Field 8"; // 8 
$field[9] = "Field 9"; // 9 
$field[10] = "Field 10"; // 10 

$reversed = array_reverse($field); 

foreach ($reversed AS $element) 

echo $element; 

} 
?> 
+0

此代碼仍然無法工作。 array_reverse是非破壞性的。它返回一個新的數組。它不會修改原始數組。您已經回答後,無需簡單地將您的答案更改爲我的答案。 – Sherif

+0

我不是那種低估了你的人,但是你的解決方案有一個錯誤,'array_reverse($ field)'返回反向數組,所以你需要把返回值放到一個新數組中。 '$ reversed = array_reverse($ field)' – slownage

+0

好的修好了。你幾乎可以回答,雖然 – christopher

3
for ($n=$i; $n>=1; $n--) { 
    echo $field[$n]; 
} 
5

不要使用循環遍歷數組。 PHP有一個可愛的foreach構造,它可以做得更好,而且更方便。

foreach (array_reverse($field) as $value) { 
    echo "$value\n"; 
} 
+0

我同意,但有時你必須限制一個for循環。例如,在包含更多數組的數組的博客上顯示最後10篇文章。然後有點吮吸,因爲你必須預定義一個迭代器,並在每個循環中觀察它並觀察它,直到達到10並打破它。 – Sanne

+0

這根本不是真的。如果你想要一個數組的最後一個項目,你只需循環數組中的最後10個項目「foreach(array_slice($ field,-10)as $ value){echo $ value; }' – Sherif

+1

是的,很好。但是這是通過價值傳遞的,所以表現可能不是最好的。 – Sanne