1.
$countsort_sql
=
"SELECT
*
FROM
`{$db_table}newssort`
WHERE
`newssort_pid`
=
'$pid'"
这个的字段newssort_pid,如果第一次$pid可以查询出结果,那么下边
while($countsort_row
=
mysql_fetch_assoc($countsort_result)){
countSort($countsort_row['newssort_pid'])
}
这里的参数$countsort_row['newssort_pid']就是你第一次输入$pid,那么如果按照正常思路就永远循环
所以,我认为这里的countSort($countsort_row['newssort_pid'])中$countsort_row['newssort_pid']应该加以变化,比如+1
2.递归的判断条件if($countsort_number
>
0)
这个$countsort_number
如果有一次查询结果那么它永远是>0,这是不对的。
修改函数如下,希望对你有所帮助。
function
countSort($pid)
{
global
$countsort_number
$countsort_sql
=
"SELECT
*
FROM
`{$db_table}newssort`
WHERE
`newssort_pid`
=
'$pid'"
$countsort_result
=
mysql_query($countsort_sql)
or
die('数据库查询失败,请与管理员联系!')
$num=mysql_num_rows($countsort_result)
$countsort_number
+=$num
if(
$num
>
0)
{
while($countsort_row
=
mysql_fetch_assoc($countsort_result)){
countSort(++$countsort_row['newssort_pid'])
}
mysql_free_result($countsort_result)
}
else
$abc=
$countsort_number
}
function style($id,$i){static $i
$sql="select * from sort where id=".$id
$rs1=mysql_query($sql)
while($rsd=mysql_fetch_array($rs1)){
style($rsd['type_id'],++$i)
}
return $i
}
我们在使用PHP递归时,会遇到各种各样的问题,其中比较令人苦恼的是有关PHP递归返回值时出现的问题。其实细细想想这是一个很简单的问题。可就是这个简单的问题困扰了半个下午。问题出在递归函数的返回值上。这是开始写的:
代码如下:
<?php
function test($i)
{
$i -= 4
if($i < 3)
{
return $i
}
else
{
test($i)
}
}
echo test(30)
?>
这段代码看起来没有问题,其实有else里面是有问题的。在这里执行的test没有返回值。所以虽然满足条件$i < 3时 return $i整个函数还是不会返回值的。对上面的PHP递归返回值函数做如下修改:
代码如下:
< ?php
function test($i)
{
$i -= 4
if($i < 3)
{
return $i
}
else
{
return test($i) //增加return, 让函数返回值
}
}
echo test(30)
?>
以上代码示例就是PHP递归返回值出现问题时的具体解决方法。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)