2011-12-28 29 views
0

當您像下面的示例一樣操作字符串時,重用變量名稱的方式不正確嗎?修改字符串時重用變量名稱(PHP)

<?php 
    $string = "Jimmy <b>likes</b> red shoes"; 
    $string = strip_tags($string); 
    $string = str_replace("red", "blue", $string); 
    $string = strtoupper($string); 
    echo $string; 
    ?> 

如果這是一個禁忌,什麼是首選?是否應該嘗試將其合併到一行代碼中?或者使用4個不同的變量名稱?

我試過搜索,但唯一可以找到的參考是關於將數組中的變量更改爲字符串或類似的東西。

謝謝!
Billy

+0

我不認爲這是他們的意思是「不重複使用變量名稱」。只是在說'。 – 2011-12-28 03:28:58

+0

對我來說,沒關係,這正是我如何做這種表述。 – 2011-12-28 03:29:40

+0

而不是將其視爲「重複使用名稱」,您可以將其想象爲多次修改相同變量。不,我會說它絕對沒有錯。 – powerbuoy 2011-12-28 03:32:54

回答

3

它沒有什麼不對,只要你以後不需要原始的$string值。完成$string = something($string)後,原始值將被銷燬並替換爲修改後的版本。

從理論上講,你可以簡單地鏈上的整個序列一起

echo strtoupper(str_replace('red', 'blue', strip_tags('Jimmy likes...'))); 

但爲使不可讀和不可維護的代碼。

+0

我記得我學習PHP時遇到的一個障礙是想從內到外閱讀這樣的東西。 OP的版本肯定更清晰。 – 2011-12-28 03:34:09

+1

@Marmartigan:OP的版本更清晰。但是,從這篇文章:http://code.google.com/speed/articles/optimizing-php.html:不要無故複製變量。 – 2011-12-28 03:40:41

+0

@ZulkhaeryBasrul:「沒理由」?原因是可讀性和易維護性。我可以考慮其他幾個原因,但我會留在那裏。 – 2011-12-28 03:58:08

0

變量名應該是存儲在其中的數據的簡短精確的描述。因此,重新使用變量名是很好的,甚至在沒有更好的名字時更好。在另一面,變量不應該在引入歧途的企圖重新使用在optimization

for ($i=0; $i < n; ++$i) { 
    ... 
} 
for ($map as $i => $value) { 
    ... 
} 

的索引(存儲在$i值)在第二循環中更好地是整數,而不是再利用$i來存儲字符串,因爲$i幾乎是整數索引的通用代碼。如果有人堅持清理空間,他們可以使用unset

變量的真正危險是在廣泛的範圍內使用它們(全局變量和大函數),其中名稱空間衝突可能導致數據被覆蓋。除了防止碰撞,小函數可以幫助減少內存使用,因爲局部變量會更短暫。