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

PHP str_replace: Element order in arrays and output result

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

第一版代码returns: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; ?>

第二个查询 returns 所需的结果,我在我的代码中使用了它,但我不清楚为什么第一个查询无法正常工作。

在实际代码中,我通过读取页面的全局变量来提供替换主题(例如 18):

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

谢谢。

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