2012-11-27 62 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; 
}