2015-09-30 76 views
2

如何在使用for循環php時檢查最後一個循環?如何檢查在php中使用循環時的最後一個循環?

這是我的代碼,但它無法正常工作。

$x = "10"; 
for ($i = 0; $i < $x; $i++) { 
    if ($i != '$x - 1') { 
     echo "$i no last"; 
    } else { 
     echo "$i last"; 
    } 
    echo "<br/>"; 
} 
?> 

當我測試它的回聲

0 last 
1 no last 
2 no last 
3 no last 
4 no last 
5 no last 
6 no last 
7 no last 
8 no last 
9 no last 

我怎樣才能做出最後的循環代碼檢查?謝謝。

+1

'$ I ='$ X - 1''是看文字串$ X - 1幹掉了!圍繞表達式的單引號,如果你喜歡,用括號代替。 –

回答

4

有其他數據類型在PHP中的字符串。你所做的是比較字符串,而不是實際的數字。

$x = "10";將不會設置$x10,而是"10",這是由一個和一個零構建的字符串。這具有不一定是數值10

您的比較然後藉此串,並使用表達'$x - 1'比較它循環的計數器變量。這是這裏最重要的事情。 PHP不會替換單引號字符串中的變量。下面是一個例子作比較:

$foo = 42; 
echo '$foo Bar'; // Output: $foo Bar 
echo "$foo Bar"; // Output: 42 Bar 

所以,基本上你的if條件確實是檢查你的循環的計數器不等於'$x - 1'。比較字符串的工作方式與比較數字完全不同,在這種情況下,它完全不符合你的意圖。 (尤其是因爲PHP的平等(==)和不等號(!=),有時表現得真的很意外,如果你不熟悉的類型。)

不留神PHP試圖幫助您儘可能就可以了,這就是爲什麼你for循環工作。在那裏你比較一個數字和一個字符串。這是沒有意義的,但PHP使它爲你工作。 ;)

只需使用一切,數值不串符號:

<?php 
$x = 10; 
for($i=0; $i < $x; $i++) 
{ 
    if($i != ($x - 1)) { 
     echo $i."no last"; 
    } else { 
     echo $i."last"; 
    } 
    echo "<br>"; 
} 
+0

+1雖然只是刪除引號就可以做到這一點,因爲PHP會將$ x的類型轉換爲10.只是一個附註。 ;) –

+1

當然。儘管如此,不會把它拍攝得很好。我不會回答基本上只是一個錯字導致問題的問題。足夠的人正在做這個「工作」。 ;) –

0

試試這個,你應該得到所需的輸出

$x = "10"; 
for($i=0;$i<$x;$i++) 
{ 
    if($i!= $x - 1) { 
     echo $i."no last"; 
    } else if($i == $x - 1) { 
     echo $i."last"; 
    } 
    echo "<BR>"; 
} 
+1

來吧,至少_explain_你做了什麼改變,而不僅僅是「在這裏你去」。 –

+0

刪除'if()'中的單引號 –

+0

_在answer_中。另外,您刪除了2個單引號。最後,你做到了,因爲? –

相關問題