① 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遞歸函數返回值問題
函數與自己回調的函數都不一樣,怎麼能得到正確的結果?還有把數據表的結構和數據給出來才能給你分析嘛。