2014-09-23 1 views
0

다음과 유사한 코드를 이해하려고 시도합니다.str_replace 배열을 사용

$line = 'This line has a cat ant goat dog monkey rat and ape'; 
$animals = array('cat', 'dog', 'monkey', 'rat'); 

$count = 1; 
while ($count) 
{ 
    $line = str_replace($animals, '', $line, $count); 
} 

echo $line; 

여기 루프에 대한 필요성을 이해하지 못하는 것 같습니다. 다음과 같은 결과를 줄 것 같습니다.

$line = 'This line has a cat ant goat dog monkey rat and ape'; 
$animals = array('cat', 'dog', 'monkey', 'rat'); 

$line = str_replace($animals, '', $line, $count); 

echo $line; 

그래서 왜 루프가 ... 여기에 줄거리가 누락 되었습니까? 아니면 어떤 이점이 있습니까?

+1

루프 된 코드가없는 str_replace는 첫 번째 occurance을 대체 전 자바 스크립트 개발자가 작성됩니다. –

+0

루프가 의미가 없으며 끊기가 없습니다 – Ghost

+0

아니요, 'str_replace()'에 대한 매뉴얼을 읽지 못했거나 이해하지 못했기 때문에 루프가 완료된 것처럼 보입니다. –

답변

0

단어 교체 후 결과 문자열이 반복 될 수 있습니다.

예 :

$line = 'aaaaaaaaa'; 
$animals = array('aaa'); 

$count = 1; 
while ($count) 
{ 
    $line = str_replace($animals, 'a', $line, $count); 
} 

echo $count . '<br>' . $line; //result a 

$line = 'aaaaaaaaa'; 
$animals = array('aaa'); 

$line = str_replace($animals, 'a', $line, $count); 

echo $count . '<br>' . $line; //result aaa 
+0

내 예제에서'aaaaaaaaa '(while)을 사용한 첫 번째 반복 : 1) line = aaa, count = 3; 2) line = a, count = 1; 3) line = a, count = 0; (0 동안) 0이면 루프에서 빠져 나옵니다. – overals

+0

Gorchak는 훌륭했습니다! 모든 것을 완전히 이해하는 데는 다소 시간이 걸렸지 만 결국 페니는 결국 떨어졌습니다. – Grateful

-1

먼저 str_replace의 $ count 변수를 이해해 보겠습니다.

일치하는 키워드를 대체 한 횟수를 나타냅니다. $ 카운트는 4와 동일 위와 경우

는 상기 제 1 루프에서, $ 카운트하여야한다 4.

같음, while 루프가 계속된다. str_replace 행이 다시 실행됩니다.

두 번째 루프에서 str_replace의 두 번째 실행시 교체가 전혀 없습니다. $ count는 전혀 일치가 없으므로 0이됩니다. 모든 키워드가 처음 교체되었습니다.

제 생각에는 str_replace가 처음에는 제대로 작동하지 않을 경우를 대비해 두 번째 루프가 불필요한 예방입니다. 그렇지 않으면 두 번째 루프는 의미가없고 쓸모가 없다. 왜냐하면 PHP는 거의이 기능 레이어에서 실수를하지 않기 때문이다.