PHP 無限遞迴函式
/** * 無限遞迴下拉選擇框 * @param $data 陣列 * @param $pid 父id * @param int $t 迴圈次數:作用縮排 * @param int $selected 選中的下標 * @return string * @author zhengjingqiang * @email [email protected] * @date 2015-10-22 */ function html_options($data=array(), $pid=0, $t=-1, $selected=0){ $html_options = ''; $t++; $nbspstr = str_repeat(' ', $t * 4); if ($data) { foreach ($data as $k => $v) { if($pid == $v['pid']){ // 判斷是否是最後一個下拉選項卡 $symbol_str = (count($data) == ($k+1)) ? '┗' : '┣'; // 判斷是否選中 $selected_str = ($selected == $v['id']) ? ' selected="selected"' : ''; // 下拉選擇框資料 $html_options .= '<option value="' . $v['id'] . '" '.$selected_str.'>' . $nbspstr . $symbol_str . $v['name'] . '</option>'; // 無限迴圈查詢子集 $html_options .= html_options($data, $v['id'], $t, $selected); } } } return $html_options; } /** * 二維陣列遞迴 * @param array $arr * @return array * @author zhengjingqiang * @email
[email protected] */ function category($arr = array()){ $info = array(); if(count($arr) > 0){ foreach($arr as $k => $vo){ if($vo['pid'] == 0 ){ foreach($arr as $v){ if($v['pid'] == $vo['id']){ $vo['children'][] = $v; } } $info[] = $vo; } } } return $info; } /** * 無限分類 * @param $array * @param int $pid * @return array * @author zhengjingqiang * @email[email protected] */ function menuTree($array,$pid){ $arr = array(); foreach ($array as $v) { if ($v['pid'] == $pid) { $tem = menuTree($array, $v['id']); //判斷是否存在子陣列 $tem && $v['child'] = $tem; $arr[] = $v; } } return $arr; }
相關推薦
PHP 無限遞迴函式
/** * 無限遞迴下拉選擇框 * @param $data 陣列 * @param $pid 父id * @param int $t 迴圈次數:作用縮排 * @param int $selected 選中的下標 * @return string
php 遞迴函式的三種實現方式 php利用遞迴函式實現無限級分類
遞迴函式是我們常用到的一類函式,最基本的特點是函式自身呼叫自身,但必須在呼叫自身前有條件判斷,否則無限無限呼叫下去。實現遞迴函式可以採取什麼方式呢?本文列出了三種基本方式。理解其原來需要一定的基礎知識水品,包括對全域性變數,引用,靜態變數的理解,也需對他們的作用範圍有所理解。遞迴函式也是解決無限級分類的一個很
【PHP】遞迴函式實現遞迴運算器
<html> <head> <meta charset="utf-8"/> </head> <body> <!-- 表單提交開始--> <form action="test-digui.php"
php 無限遞迴分類
$categories = array( array('id'=>1,'name'=>'電腦','pid'=>0), array('id'=>2,'name'=>'手機','pid'=>0), array('id'=>3,
PHP中遞迴函式的一個常見邏輯問題
首先,我們得知道遞迴函式是什麼東西,通俗來講也就是自己呼叫自己本身的函式。 現在需要設計一段程式碼,解決1到10疊加的問題。 程式碼A: <?php //遞迴函式 $num=10; function add($sum){ static $tot; if
php 無限遞迴查詢子id 子類 根據父分類 父ID 查詢所有子分類 子ID
function posterity($fid) { global $connection; //static $children=array(); global $children; $sql = "SELECT DEPT_ID FROM department WHERE DEPT_PAREN
php用遞迴實現無限極分類獲取樹形結構
表中的資料如下: 遞迴的方法: /** * 用遞迴獲取子類資訊 * $data 所有分類 * $parent_id 父級id * $level 層級 * $result 分好類的陣列 */ function getChild($data,$parent
php遞迴函式及簡單例項講解
遞迴函式即自呼叫函式,在函式體內部直接或者間接的自己呼叫自己,即函式的巢狀呼叫是函式本身。通常在此型別的函式提之中會附加一個條件判斷敘述,以判斷是否需要執行遞迴呼叫,並且在特定的條件下終止函式的遞迴呼叫動作,把目前流程的主控權交回到上一層函式來執行。以此,當某
PHP中使用遞迴函式
下面是使用遞迴函式的一個小例子。 目的是根據parent_id和task_id對task進行分類。 具體實現: <?php //連線資料庫,使用前幾天建立的資料庫連線檔案進行連線,如
第四章 php函式(自定義函式、變數範圍、引數傳遞,可變函式、遞迴函式、內建函式)
任何有效的php程式碼都可以作為函式體使用 //例子1 function add($a,$b){ echo $a+$b; } add(10,20); //php頁面顯示30 // 例子2 function add($a,$b){ return $a+$b; //r
php遞迴函式的理解
很多同學在學習遞迴函式的時候會感到頭暈,無法搞清楚遞迴函式的原理和執行機制,本文將給大家詳細講解遞迴函式的執行機制和運用。 那什麼是遞迴函式呢? 遞迴函式即為自呼叫函式,在函式體內直接或間接自己呼叫自己,但需要設定自呼叫的條件,若滿足條件,則呼叫函式本身,若
淺談PHP第四談---遞迴函式
很多同學在學習遞迴函式的時候會感到頭暈,無法搞清楚遞迴函式的原理和執行機制,本文將給大家詳細講解遞迴函式的執行機制和運用。 那什麼是遞迴函式呢? 遞迴函式即為自呼叫函式,在函式體內直接或間接自己呼叫自己,但需要設定自呼叫的條件,若滿足條件,則呼叫函式本身,若不滿足則終止本函式的自呼叫,然後把目前流程的
php 用遞迴實現的無限級別分類
<?php header("Content-type:text/html; charset=utf-8"); /** * * @category contry_category 實現一個無限級別分類,類似種類的劃分,常用在欄目導航 * */ /** +-------------------
php不用遞迴實現無限分類資料的樹形格式化
<?php /** * 此方法由@Tonton 提供 * http://my.oschina.net/u/918697 * @date 2012-12-12 */ FUNCTION genTree5($items) { foreach ($items AS $item)
C++拷貝建構函式的引數為什麼必須使用引用型別(無限遞迴)
我轉載這個主要是因為這個風趣幽默哈。。 在C++中, 建構函式,拷貝建構函式,解構函式和賦值函式(賦值運算子過載)是最基本不過的需要掌握的知識。 但是如果我問你“拷貝建構函式的引數為什麼必須使用引用型別?”這個問題, 你會怎麼回答? 或許你會回答為了減少一次記
PHP遞迴函式
遞迴函式:自己呼叫自己使用引用獲得遞迴結果:function showColors($colors,&$colorStr) { if(count($colors)==0)return false; $color = array_pop($colors)
拷貝建構函式的引數為什麼必須使用引用型別(避免無限遞迴拷貝,但其實編譯器已經強制要求了)
在C++中, 建構函式,拷貝建構函式,解構函式和賦值函式(賦值運算子過載)是最基本不過的需要掌握的知識。 但是如果我問你“拷貝建構函式的引數為什麼必須使用引用型別?”這個問題, 你會怎麼回答? 或許你會回答為了減少一次記憶體拷貝? 很慚愧的是,我的第一感覺也是這麼回答。不好還
十一、Go基礎程式設計:遞迴函式、函式型別、匿名函式與閉包
1. 遞迴函式 遞迴指函式可以直接或間接的呼叫自身。 遞迴函式通常有相同的結構:一個跳出條件和一個遞迴體。所謂跳出條件就是根據傳入的引數判斷是否需要停止遞迴,而遞迴體則是函式自身所做的一些處理。 //通過迴圈實現1+2+3……+100 func Test01() int { i
遞迴函式使用例項
一.建立遞迴陣列 //$fid 父id $v['id'] 子id $v['child'] 子id陣列 //$cate 要迴圈的一維陣列 function digui($cate, $fid = 0){ foreach ($cate as $v)
Python全棧學習筆記day 17:遞迴函式之:二分法(老男孩Python全棧學習s9 day17 二分法程式有些問題)
遞迴函式 遞迴 : 在函式中呼叫自身函式 最大遞迴深度預設是997/998 —— 是python從記憶體角度出發做得限制 二分法: 實現程式: 最基礎版:(很多問題:切分導致出現了新列表,無法返回元素在 l 中的位置) l = [2,3,5,10,15,16,