2012-11-27 2 views
0

다음은 제가 단 하나의 난이도에 직면했을 때 다음 스크립트를 실행할 때 비교 실패로 인해 $ flag doesnot echo 친절하게도이 문제를 해결하는 방법을 알려주시겠습니까?Return false 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_ return을 실행하려는 코드를 넣거나 나중에 코드가 돌아 오도록 코드를 리플 로우합니다. – TheZ

+1

이것이 기능 안에 있다면, 모든 것을 올리십시오. 그것은 거의 이해가되지 않습니다. –

답변

3

return은 현재 실행중인 코드 블록을 종료하고 해당 코드를 호출 한 곳으로 "반환"합니다. 코드의 최상위 레벨에서 반환을 실행하면 본질적으로 exit() 호출이고 에코에 도달하지 않습니다.

+0

다음 내가 위의 코드에서 플래그를 설정하는 또 다른 좋은 방법은 내가 그에 따라 반향하는 데 사용할 수 있습니까 ?? –

+0

'$ flag = 0' 대신에? –

0

return 문 앞에 echo $flag을 넣지 않는 이유는 무엇입니까?

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

반환 값이 그 시점에서 스크립트를 종료하므로 나중에 모든 코드가 무시 될 것이므로 여기에 동의해야합니다. –

0

당신은 return 전에 echo을 넣어해야합니다. return은 호출 함수로 실행을 다시 가져옵니다. 따라서 그 이후의 모든 코드는 실행되지 않습니다.

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