Rumah >pembangunan bahagian belakang >tutorial php > while统制循环次数出错【help】

while统制循环次数出错【help】

WBOY
WBOYasal
2016-06-13 13:26:231078semak imbas

while控制循环次数出错【help】
上代码...下面代码有点问题.本来想用$i控制输出次数.但是替换一次就break;
想了半天无解.
求帮助...谢谢...

PHP code
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->
//替换关键字
function ReplaceKey($newstext){
    global $empire,$dbtbpre,$public_r;
    if(empty($newstext))
    {return $newstext;}
    $sql=$empire->query("select keyname,keyurl from {$dbtbpre}enewskey");
    $i=0;
    while($r=$empire->fetch($sql))
    {
        if($i '.$r[keyname].'',$newstext):preg_replace('/'.$r[keyname].'/','<a href=".%24r%5Bkeyurl%5D." target="_blank">'.$r[keyname].'</a>',$newstext,$public_r[repkeynum]);
        }
        else  
            break;
        $i++;
    }
    return $newstext;
}



------解决方案--------------------
能确认查询结果就一定大于5吗
------解决方案--------------------
个人认为你的调试有问题,结果并不是你说的那样只替换了一次
$public_r[repkeynum]的值在函数运行期间并没有改变,那么就一定不会执行else分支
------解决方案--------------------
代码控制过程应该没问题,有问题的应该是在


$newstext=empty($public_r[repkeynum])?str_replace($r[keyname],''.$r[keyname].'',$newstext):preg_replace('/'.$r[keyname].'/',''.$r[keyname].'',$newstext,$public_r[repkeynum]);


这个部分.

所以似乎应该修改成 $newstext.=xxxx 返回的字符串才是你最终想要的目的吧.
Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn