作者 主題: strpos 不顯示任何結果  (閱讀 2065 次)

0 會員 與 1 訪客 正在閱讀本文。

iopklmm

  • 懷疑的國中生
  • **
  • 文章數: 71
    • 檢視個人資料
strpos 不顯示任何結果
« 於: 2013-02-16 20:46 »

我有一個檔案, 他是用 -1 來表示檔案結束 ,我用一個迴圈搭配strpos來檢查是否掃到 -1 了

while(  strpos( ($Line = fgets($Input)) , "-1" )  != false )
{
    print $Line;
}

照理說如果沒有掃到 -1 結果不等於 false 應該會印出行($Line), 可是都沒有印出來,怎麼會這樣?
謝謝

Yamaka

  • 俺是博士!
  • *****
  • 文章數: 4913
    • 檢視個人資料
    • http://www.ecmagic.com
Re: strpos 不顯示任何結果
« 回覆 #1 於: 2013-02-16 22:25 »

我有一個檔案, 他是用 -1 來表示檔案結束 ,我用一個迴圈搭配strpos來檢查是否掃到 -1 了

while(  strpos( ($Line = fgets($Input)) , "-1" )  != false )
{
    print $Line;
}

照理說如果沒有掃到 -1 結果不等於 false 應該會印出行($Line), 可是都沒有印出來,怎麼會這樣?
謝謝

引用
php 官網的說明:
int strpos ( string $haystack , mixed $needle [, int $offset = 0 ] )

Returns FALSE if the needle was not found

沒找到指定的字串會傳回 false,你的 while 是:

當 strpos() 傳回非 false 才成立,也就是有找到 『-1』字串才成立..

所以...正好用反了吧  :D

ps:為何不直接用 feof()?

iopklmm

  • 懷疑的國中生
  • **
  • 文章數: 71
    • 檢視個人資料
Re: strpos 不顯示任何結果
« 回覆 #2 於: 2013-02-17 19:29 »
嗯 , 搞笑了 ...

因為題目要求遇到 -1 結束 , 所以才沒有用 feof ....