2014-09-23 59 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

環狀碼由前JavaScript開發其中str_replace函數僅替換第一次出現寫入。 – 2014-09-23 12:49:37

+0

循環沒有意義,也沒有中斷 – Ghost 2014-09-23 12:50:37

+0

不,循環看起來像是這樣做的,因爲'str_replace()'手冊沒有被讀取或者沒有被理解。 – 2014-09-23 12:51:16

回答

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; (while 0)如果0則從循環中斷開; – overals 2014-09-23 13:39:33

+0

戈爾查克,非常好!雖然,花了我一點時間才完全掌握了一切,但這筆錢最終卻下降了。 – Grateful 2014-09-23 14:09:07

-1

讓我們先了解str_replace中的$ count變量。

它代表匹配關鍵字替換的次數。

在上述情況下,在第一循環中,$計數應按$計數等於4等於4.

,while循環繼續。 str_replace行將再次運行。

在第二個循環中,在str_replace的第二次運行中,根本沒有替換。 $ count也會變成0,因爲根本沒有匹配。所有關鍵字在第一次被替換。

因此,根據我的愚見,第二個循環是某種不必要的預防,以防str_replace在第一時間不能正常工作。否則,第二個循環是完全沒有意義的,也是無用的,因爲PHP在這個功能層很少犯這樣的錯誤。