1. 程式人生 > >淺談 PHP遞歸的理解(遞歸聽起來很高端的詞匯 其實就是兩次循環)

淺談 PHP遞歸的理解(遞歸聽起來很高端的詞匯 其實就是兩次循環)

通過 UNC ret fun array row 子元素 原生 次循環

$data = [
    [‘pid‘=>0,‘id‘=>1],
    [‘pid‘=>1,‘id‘=>2],

    [‘pid‘=>3,‘id‘=>4],
    [‘pid‘=>0,‘id‘=>3],

];

//對上面的數據進行遞歸排序(原生的寫法)
function genCate( $data, $pid = 0) { static $result = array(); foreach ($data as $key => $row) { if ($row[‘pid‘] == $pid) {
$result[] = $row;
$parent_id = $row[‘id‘]; foreach($data as $v){ if ($v[‘pid‘] == $parent_id) { $result[] = $v; } }
} }
return $result; }

PHP遞歸的寫法
function genCate( $data, $pid = 0)
{
    static $result
= array(); foreach ($data as $key => $row) { if ($row[‘pid‘] == $pid) { $result[] = $row; // $parent_id = $row[‘id‘]; genCate($data, $row[‘id‘]); /* foreach($data as $v){ if ($v[‘pid‘] == $parent_id) { $result[] = $v; } }
*/ } } return $result; }


  其實就是同一個數組兩次循環 通過變動的是父id 不斷找子元素

 

淺談 PHP遞歸的理解(遞歸聽起來很高端的詞匯 其實就是兩次循環)