PHP 递归函数返回值问题

PHP 递归函数返回值问题,第1张

朋友,你这个函数逻辑有问题

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递归返回值出现问题时的具体解决方法。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7331357.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-04
下一篇 2023-04-04

发表评论

登录后才能评论

评论列表(0条)

保存