以下是我剛纔發現的有關str_replace()的一些有趣內容。 在我的函數中,我需要做兩個mysql查詢,這與排序結果時的輕微更改是一樣的。作爲一個參數,我得到了包含一個order子句的字符串,例如'surname ASC',但它也可以是'surname DESC'。現在,我想輕鬆切換到倒車str_replace函數使用排序,我想這應該做的伎倆:使用str_replace和數組切換文本
str_replace(array('ASC', 'DESC'), array('DESC', 'ASC'), $subject)
在我的腦海裏應該改變ASC與DESC和DESC中所有出現的所有出現與ASC。由於字符串只包含兩個中的一個,所以我應該得到顛倒的順序子句。 但事實並非如此。上面的代碼的輸出是相同的字符串。
我做了一些測試,它tourned的是,這些來電做你想讓他們做什麼:
str_replace('ASC', 'DESC', $subject)
str_replace(array('ASC'), array('DESC'), $subject)
在我看來這是奇怪,因爲
array('ASC', 'DESC') != array('DESC', 'ASC')
那麼,爲什麼PHP會認爲這作爲平等?有沒有其他方法可以輕鬆地進行這種替換?