str_replace里面的while语句

时间:2013-12-15 21:44:58

标签: php while-loop str-replace

为什么我在while循环中的str_replace没有按预期运行?

我的代码:

    $comments=$_POST['comments'];
$result = mysql_query("SELECT * FROM cust LEFT JOIN contact AS contact ON cust.cid=contact.contact_id WHERE cid='$aDoor[$i]'");
    while ($row = mysql_fetch_array($result)) {
      $petname=$row['petname'];
      echo "Petname ".$petname."<br/>";
      $comments=str_replace("+petname","$petname",$comments);
      echo $comments."<br/>";
}

当我执行此代码时,最奇怪的事情发生了。 这条线: echo "Petname ".$petname."<br/>"; 按预期工作,并在cid的数据库中回显正确的petname。 但 这一行:

$comments=str_replace("+petname","$petname",$comments);
echo $comments."<br/>";

将始终显示FIRST宠物的名字。当我在注释变量中添加正确的$ petname时,怎么会这样呢?

P.S。我正在做str_replace的原因是,当他向客户发送电子邮件时,使用它的人可以输入+ pet,当它到达客户端时,它将具有正确的宠物名称。

1 个答案:

答案 0 :(得分:4)

这是因为$comments在您第一次循环后被重新定义,所以说在开始时$comments+petname,替换后$comments $comments将在行中保存petname的值,然后再次循环,使用$comments=$_POST['comments']; $result = mysql_query("SELECT * FROM cust LEFT JOIN contact AS contact ON cust.cid=contact.contact_id WHERE cid='$aDoor[$i]'"); while ($row = mysql_fetch_array($result)) { $petname=$row['petname']; echo "Petname ".$petname."<br/>"; $comment_replaced=str_replace("+petname","$petname",$comments); echo $comment_replaced."<br/>"; } 的值作为宠物名称,以解决此问题,只需更改变量的名称

{{1}}