① php递归函数中return和echo是怎么理解的呢
return是返回参数值,有echo 是直接输出内容。
② php递归,这个方法返回的值里面,child字段的值为空的,不知道为何,求大神详解
<?php
$nodeArr=array(
"0"=>Array
(
"id"=>92,
"name"=>"show_page",
"title"=>"测试",
"pid"=>13
),
"1"=>Array
(
"id"=>13,
"name"=>"iguess",
"title"=>"根目录",
"pid"=>0
)
);
functionnode_merge($node,$pid=0){
$arr=array();
foreach($nodeas$key=>$v){
if($v['pid']==$pid){
$v['child']=node_merge($node,$v['id']);
$arr[]=$v;
}
}
return$arr;
}
$testArr=node_merge($nodeArr);
var_mp($testArr);
?>
打印的结果
③ PHP多次递归返回值不一样
因为$res是静态变量,所以每次调用的结果是不同的。
④ 如何理解php中的递归函数 (详细讲解)
递归其实就是“一个函数的自调用”
在这个“自调用”的过程中,必须要有一个变化的“参数”,当这个“参数”达到你的期望值的时候,终止该“自调用”过程
拿楼主的程序来说
demo($n)内部又有调用demo($n-1),构成了“自调用”
且,$n又有一个“期望值”,即是$n>1,不满足此条件时,该自调用终止
即是说,最后一个执行的demo是demo($n9-1),其中$n9=2,然后返回为1(因为执行了return 1)
则$n9*demo($n9-1)即等于 2*demo(2-1),又等于2*1=2;
则$n8*demo($n8-1)即等于 3*demo(3-1),又等于3*2=6;
则$n7*demo($n7-1)即等于 4*demo(4-1),又等于4*6=24;
……
依次类推
这样想:
demo(1)是等于1,这个没有疑问吧?
然后demo(2)等于2*demo(1)=2*1=2
然后demo(3)等于3*demo(2)=3*2=6
……
一直到demo(10)
⑤ php递归函数返回值时有时无
if($checkCodeDate['invite_code']){ createInviteCode(); } 加个return 如下:
if($checkCodeDate['invite_code']){ return createInviteCode(); }
⑥ PHP 递归函数返回值问题
朋友,你这个函数逻辑有问题
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;
}
⑦ php递归检索目录如何有返回值
function readFileFromDir($dir)
{
static $deepth=0;
if(!is_dir($dir)){
return false;
}else{
$deepth++;
}
$handle=opendir($dir); //打开目录
while(($file=readdir($handle))!==false)
{
if($file=='.'||$file=='..')
{
continue;
}
$file=$dir.DIRECTORY_SEPARATOR.$file;
if(is_file($file)) //是文件就输出
{
print str_repeat(' ',$deepth).$file.'<br/>';
}
elseif(is_dir($file))
{
readFileFromDir($file); //递归查询
}
}
closedir($dir); //关闭目录
$deepth--;
return ;
}
$dir='/home/renbiao/图片';
readFileFromDir($dir);
⑧ php递归返回值只有第一次的结果
$str定义在函数外部,或者从外部传进来.
functiondigui(&$str...){
return$str;
}
//或者把$str定义成全局的
functiondigui($field,$where,$db){
global$str;
.....
return$str;
}
⑨ 解释一下php中递归函数的作用
在函数中 echo 是直接输入 echo 后面的程序还会被继续执行\r\nreturn 是这个函数的返回值 在函数内 一但程序执行到 return 下面的程序就会结束。希望对你又帮助
⑩ php递归函数返回值问题
函数与自己回调的函数都不一样,怎么能得到正确的结果?还有把数据表的结构和数据给出来才能给你分析嘛。