2012-01-23 63 views
0

我有以下代碼:爲什麼這個字符串替換函數不影響數字?

$badChars = array("W", "X", "Y", "0"); 
$goodChars = array("A", "B", "C", "1"); 
$string = str_replace ($badChars, $goodChars, $string); 

當我看着$string,我可以看到,W,X和Y都換成了A,B和C,如希望的那樣。但$string仍然包含零。

我想這可能是某種形式的字符串/整數混亂的,所以我也試過:

$badChars = array("W", "X", "Y", 0); 
$goodChars = array("A", "B", "C", 1); 

...但它並沒有區別。

爲什麼數字被str_replace()忽略?

+0

這是您的問題中的拼寫錯誤還是代碼有缺陷?在你的第一個數組中的W之前缺少''' – bardiir

+3

無法重現,請顯示一個完整的(非)工作示例http://codepad.viper-7.com/abrssq – deceze

+0

適用於我...什麼是' $ string'你試圖運行這個函數嗎? – stealthyninja

回答

1

我很驚訝它的工作方式你有它(或者,因爲你編輯的問題,你的方式它,這是一個不返回str_replace ($badChars, $goodChars, $string);)。 str_replace回報修改字符串:

$string = str_replace ($badChars, $goodChars, $string); 

除此之外,該代碼是好的。使用測試代碼:

<?php 
    $string = "WAIT XEROX YETI 1234567890"; 
    $badChars = array("W", "X", "Y", "0"); 
    $goodChars = array("A", "B", "C", "1"); 
    $string = str_replace ($badChars, $goodChars, $string); 
    var_dump($string); 
?> 

你得到:

string(26) "AAIT BEROB CETI 1234567891" 
1
$badChars = array("W", "X", "Y", "0"); 
$goodChars = array("A", "B", "C", "1"); 
echo str_replace ($badChars, $goodChars, "WXY0 ABC1 lol"); 

這段代碼的結果是:ABC1 ABC1笑

如此看來你的代碼是正確的,唯一的缺陷是可能的替代函數本身返回一個字符串,它不是一個增變器方法。你想有可能訪問:

$val = str_replace ($badChars, $goodChars, "WXY0 ABC1 lol"); 
1

讓我提醒你,str_replace()不會修改原始字符串,但返回修改的一個:

<?php 
$badChars = array("W", "X", "Y", "0"); 
$goodChars = array("A", "B", "C", "1"); 
echo str_replace ($badChars, $goodChars, 'WXY0'); 

回報ABC1,你可能期望。