2017-04-13 51 views
0

當我使用這個代碼就告訴我正確的結果當我在條件中使用true時,strpos函數無法正常工作?

<?php 
     $string = 'there is some text'; 
     $find = 'some'; 
     function iscontain($string,$find){ 
      $check = strpos($string, $find); 
      if ($check === false) { return 0; }else{ return 1; } 
     } 

     if(iscontain($string,$find)){ 
      echo "true"; 
     }else{ 
      echo "false"; 
      } 

    //output: true 

?> 

但是,當我改變假成真,改變返回值一樣,如果檢查是true,所以返回1,否則爲0,從而在邏輯上是正確的,但結果不顯示正確

<?php 
    $string = 'there is some text'; 
    $find = 'some'; 
    function iscontain($string,$find){ 
     $check = strpos($string, $find); 
     if ($check === true) { return 1; }else{ return 0; } 
    } 

    if(iscontain($string,$find)){ 
     echo "true"; 
    }else{ 
     echo "false"; 
    } 

//output : false 

?> 

爲什麼兩個結果都不一樣..?謝謝。

+1

請閱讀[strpos()']的文檔(http://php.net/manual/en/function.strpos.php)。如果找到它,則返回字符串的_position_;如果未找到,則返回「false」。它實際返回「true」時沒有狀態。 –

+0

[簡單的PHP strpos函數不工作,爲什麼?]可能的重複(https://stackoverflow.com/questions/4858927/simple-php-strpos-function-not-working-why) – mickmackusa

回答

1

這是因爲strpos從未回報true。可以返回false或整數。

因此,在您的第二個功能else分支始終運行返回0這被認爲是虛假的。

相關問題