php
  • while-loop
  • str-replace
  • 2013-12-15 52 views 0 likes 
    0

    任何人都可以幫助我找出爲什麼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/>"; 
    } 
    

    最奇怪的事情發生了,當我execture此代碼。 該行: echo "Petname ".$petname."<br/>"; 按預期工作,並在cid數據庫中回顯正確的寵物名稱。 但 行:

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

    將始終顯示第一寵物的名字拉。當我添加正確的$ petname到comments變量時,這怎麼可能?

    P.S.做str_replace的原因是,使用這個的人可以在給他的客戶發送電子郵件時鍵入+ pet,並且當它到達客戶端時,它將具有正確的寵物名稱。

    +0

    是'$ comments'之前定義的,因爲在我看來,這不是在'str_replace函數(」 + petname」, 「$ petname」,$評論);'。 – Jerska

    +0

    我需要它使線條突出,我可以使用其他字符,並嘗試我猜。 – user1789437

    +0

    $ comments定義在哪裏? – Ali

    回答

    4

    這是因爲$comments被你圈了第一次後重新定義,所以說,如果$comments開頭爲+petname,更換後,$comments將持有該行中的petname的值,然後重新循環與$comments值作爲寵物的名字,來解決這個問題,只需更改變量的名稱

    $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/>"; 
    } 
    
    +0

    100%正確。哇,我不相信我錯過了。非常感謝您的快速響應! – user1789437

    +0

    @ user1789437沒問題,選擇我的問題作爲正確的答案對我有幫助,如果這確實是正確的答案。 – Ali

    +0

    我剛剛做到了!如果我想爲4個變量做同樣的事情,那麼最好的方法是什麼?另外還有4個str_replace語句?或者你可以在一次陳述中替換5件事情嗎?我意識到這是一個新問題,但如果你能幫助你的債務id! – user1789437

    相關問題