PHP str_replace:数组中的元素顺序和输出结果


PHP str_replace: Element order in arrays and output result

我正在使用str_replace()函数来替换数组中的一些值,并稍后在mysql查询中使用新值。然而,我发现了一个我无法理解的奇怪情况。为什么这些查询没有返回相同的输出?

第一个版本的代码返回: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);

谢谢。

在第一个代码中:str_replace在搜索字符串(=='18')中找到$idPage(=='18m')的第一个元素并将其替换为'2147',然后迭代到$idPage的第二个值(=='21'),在搜索字符串中找到它(=='2147'atm)并将其替代为'2148',然后循环到$idPage的第三个值(==='22')并在搜索字符串内找不到它(=='214847'atm)。