2015-04-01 61 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