2012-11-27 95 views
0

以下是我的代碼,其中我只面臨一個難題,當我運行下面的腳本,然後由於比較失敗$ flag不回聲請讓我知道如何解決這個問題?返回false不允許回聲

$s = "iph4on comes"; 
$se = "4gb comes in iphone"; 
$f = 0; 

$tf = explode(" ",$searching); 
$ms= explode(" ",$search_in); 
foreach($tf as $word) 
{ 
if (!preg_match("/$word/i", $search_in)) 
//if (!strpos($search_in, $word)); 
return false; 
} 
{ 
$f = 1; 
} 
echo $f; 

//Due to return flase above i am not echoing 
echo "Comparison Failed"; 
+3

沒有代碼將超出返回,這是正確的。修復:把你想要運行_before_返回的代碼,或重排代碼,以便之後發生返回。 – TheZ

+1

如果這是一個函數內部,請發佈整個事情。這是毫無意義的。 –

回答

3

return終止當前執行的代碼塊和「返回」到任何稱爲該代碼。如果您在代碼的頂層執行返回,則實質上是exit()調用,您的回聲將永遠不會到達。

+0

那麼在上面的代碼中我可以使用echo來相應地設置標誌的另一個好方法是什麼? –

+0

'$ flag = 0'而不是? –

0

爲什麼不直接在返回語句之前放置echo $flag

if (!preg_match("/$word/i", $search_in)){ 
    echo $flag 
    return false; 
} 
+0

我不得不同意這裏,因爲返回會終止當時的腳本,因此之後的任何代碼都將被忽略。 – 2012-11-27 16:45:50

0

您需要將echo放在return之前。 return將執行返回到調用函數,因此之後的任何代碼都不會執行。

if (!preg_match("/$word/i", $search_in)) { 
    $flag = 1; 
    echo $flag; 
    echo "Comparison Failed"; 
    return false; 
}