2015-04-01 62 views
1

我正在使用str_replace()函數替換數組中的某些值,並在以後的mysql查詢中使用新值。但是,我發現了一個我無法理解的奇怪的情況。爲什麼這些查詢不會返回相同的輸出?PHP str_replace:數組中的元素順序和輸出結果

代碼的第一個版本將返回:214847

<php? $idPage=array(18,21,22); 
$idCompetition=array(2147,2148,2149); 

$idT=str_replace($idPage,$idCompetition,18); 

echo $idT; ?> 

如果我在陣列改變順序,結果是:2147

<php? $idPage=array(21,22,18); 
$idCompetition=array(2148,2149,2147); 


$idT=str_replace($idPage,$idCompetition,18); 

echo $idT; ?> 

第二屆查詢返回所需的結果,我在我的代碼中使用它,但我不清楚爲什麼第一個查詢無法正常工作。

在實際代碼我通過讀取頁的全局變量提供替換(例如18)的主題:

global $objPage;  
$idT=str_replace($idPage,$idCompetition,$objPage->id); 

感謝。

+0

' Rizier123 2015-04-01 11:00:12

+0

在第一個查詢程序做: 1串18 2.改變18 2147 3後,在我們的字符串,找到(2147),21發現,更改爲2148找到18,我們的串是214847 – 2015-04-01 11:01:33

+0

@ Rizier123,大聲笑...它不是我所知...我犯了錯誤,然後複製粘貼它... :) – darkoKc 2015-04-01 11:25:56

回答

0

在第一個代碼中: str_replace在搜索字符串(=='18')中查找$ idPage(=='18')的第一個元素並將其替換爲'2147',然後迭代到$ idPage的第二個值=='21'),在搜索字符串中找到它(==' 47'atm)並用'2148'代替它,然後迭代到$ idPage的第三個值(=='22'),並且不能在搜索字符串中找到它(=='214847'atm)。

+0

謝謝。你的回答已經解釋了一步一步發生的事情。在技​​術上,我的問題問「爲什麼我得到了214847」,並得到了答覆。另外我想提一下,@ Rizier123將我的問題與另一個問題聯繫起來,他解釋瞭如何避免這個問題。 – darkoKc 2015-04-01 12:29:30