亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > PHP > 正文

php基于雙向循環隊列實現歷史記錄的前進后退等

2020-03-22 19:30:46
字體:
來源:轉載
供稿:網友
本文實例講述了php基于雙向循環隊列實現歷史記錄的前進后退等功能。分享給大家供大家參考。具體如下:為實現一個記錄操作歷史的功能1. 和撤銷,反撤銷功能類似的一個功能。(實現操作的前進后退)
2. 和discuz論壇登錄后查看帖子(可以前進后退查看過的帖子,還有帖子查看歷史記錄)
3. 邏輯和windows資源管理器地址欄前進后退功能一樣。根據這種需要,實現了一個數據結構。寫了一個通用的類,暫叫歷史記錄類吧?!驹砗蜁r鐘類似。實例化對象時可以構造長度為N(可以根據需要定長度)個節點的環】然后整合各種操作。前進、后退、插入、修改插入。類可以構造一個數組?;蛘邆魅霐到M參數構造一個對象。 每次操作之后可以取得操作后的數組。 操作完的 數據可以根據自己的需要以合適的方式保存。 放在cookie,session里面,或者序列化,或轉為json數據保存在數據庫里,或者放在文件里面都可以。 方便下一次使用。為了便于擴展,存放更多的數據。具體每一條數據也是一條數組記錄。
比如根據需要進行擴展:array('path'= 'D:/www/','sss'= html' target='_blank'>value)順便貼出,自己寫的調試變量用的一個文件。1. pr()可以格式化并高亮輸出變量。pr($arr),pr($arr,1)是輸出后退出。
2. debug_out() 用來輸出多個變量。默認為退出。
3. debug_out($_GET,$_SERVER,$_POST,$arr);history.class.php文件: php include 'debug.php';* 歷史記錄操作類* 傳入或者構造一個數組。形如:array( 'history_num'= 20, //隊列節點總共個數 'first'= 0, //起始位置,從0開始。數組索引值 'last'= 0, //終點位置,從0開始。 'back'= 0, //從first位置倒退了多少步,差值。 'history'= array( //數組,存放操作隊列。 array('path'= 'D:/'), array('path'= 'D:/www/'), array('path'= 'E:/'), array('path'= '/home/')class history{ var $history_num; var $first; var $last; var $back; var $history=array(); function __construct($array=array(),$num=12){ if (!$array) {//數組為空.構造一個循環隊列。 $history=array(); for ($i=0; $i $num; $i++) { array_push($history,array('path'= '')); $array=array( 'history_num'= $num, 'first'= 0,//起始位置 'last'= 0,//終點位置 'back'= 0, 'history'= $history $this- history_num=$array['history_num']; $this- first=$array['first']; $this- last=$array['last']; $this- back=$array['back']; $this- history=$array['history']; function nextNum($i,$n=1){//環路下n一個值。和時鐘環路類似。 return ($i+$n) $this- history_num ($i+$n):($i+$n-$this- history_num); function prevNum($i,$n=1){//環路上一個值i?;赝薔個位置。 return ($i-$n) =0 ($i-$n) : ($i-$n+$this- history_num); function minus($i,$j){//順時針兩點只差,i-j return ($i $j) ($i - $j):($i-$j+$this- history_num); function getHistory(){//返回數組,用于保存或者序列化操作。 return array( 'history_num'= $this- history_num, 'first' = $this- first, 'last' = $this- last, 'back' = $this- back, 'history' = $this- history function add($path){ if ($this- back!=0) {//有后退操作記錄的情況下,進行插入。 $this- goedit($path); return; if ($this- history[0]['path']=='') {//剛構造,不用加一.首位不前移 $this- history[$this- first]['path']=$path; return; }else{ $this- first=$this- nextNum($this- first);//首位前移 $this- history[$this- first]['path']=$path; if ($this- first==$this- last) {//起始位置與終止位置相遇 $this- last=$this- nextNum($this- last);//末尾位置前移。 function goback(){//返回從first后退N步的地址。 $this- back+=1; //最大后退步數為起點到終點之差(順時針之差) $mins=$this- minus($this- first,$this- last); if ($this- back = $mins) {//退到最后點 $this- back=$mins; $pos=$this- prevNum($this- first,$this- back); return $this- history[$pos]['path']; function gonext(){//從first后退N步的地方前進一步。 $this- back-=1; if ($this- back 0) {//退到最后點 $this- back=0; return $this- history[$this- prevNum($this- first,$this- back)]['path']; function goedit($path){//后退到某個點,沒有前進而是修改。則firs值為最后的值。 $pos=$this- minus($this- first,$this- back); $pos=$this- nextNum($pos);//下一個 $this- history[$pos]['path']=$path; $this- first=$pos; $this- back=0; //是否可以后退 function isback(){ if ($this- back $this- minus($this- first,$this- last)) { return ture; return false; //是否可以前進 function isnext(){ if ($this- back 0) { return true; return false;//測試代碼。$hi=new history(array(),6);//傳入空數組,則初始化數組構造。for ($i=0; $i $i++) { $hi- add('s'.$i); pr($hi- goback());pr($hi- goback());pr($hi- goback());pr($hi- gonext());pr($hi- gonext());pr($hi- gonext());pr($hi- gonext());$hi- add('asdfasdf');$hi- add('asdfasdf2');pr($hi- getHistory());$ss=new history($hi- getHistory());//直接用數組構造。$ss- add('asdfasdf');$ss- goback();pr($ss- getHistory());
$style=' style pre#debug{margin:10px;font-size:13px;color:#222;font-family:Consolas ;line-height:1.2em;background:#f6f6f6;border-left:5px solid #444;padding:5px;width:95%;word-break:break-all;} pre#debug b{font-weight:400;} #debug #debug_str{color:#E75B22;} #debug #debug_keywords{font-weight:800;color:00f;} #debug #debug_tag1{color:#22f;} #debug #debug_tag2{color:#f33;font-weight:800;} #debug #debug_var{color:#33f;} #debug #debug_var_str{color:#f00;} #debug #debug_set{color:#0C9CAE;} /style if (is_array($var)){ print_r($var); else if(is_object($var)){ echo get_class($var)." Object"; else if(is_resource($var)){ echo (string)$var; else{ echo var_dump($var); $out = ob_get_clean();//緩沖輸出給$out 變量 $out=preg_replace('/"(.*)"/',' b id="debug_var_str" "'.'//1'.'" /b ',$out);//高亮字符串變量 $out=preg_replace('/=/ (.*)/','= '.' b id="debug_str" '.'//1'.' /b ',$out);//高亮= 后面的值 $out=preg_replace('//[(.*)/]/',' b id="debug_tag1" [ /b b id="debug_var" '.'//1'.' /b b id="debug_tag1" ] /b ',$out);//高亮變量 $from = array(' ','(',')','= $to = array(' ',' b id="debug_tag2" ( /i ',' b id="debug_tag2" ) /b ',' b id="debug_set" = /b $out=str_replace($from,$to,$out); $keywords=array('Array','int','string','class','object','null');//關鍵字高亮 $keywords_to=$keywords; foreach($keywords as $key= $val) $keywords_to[$key] = ' b id="debug_keywords" '.$val.' /b $out=str_replace($keywords,$keywords_to,$out); echo $style.' pre id="debug" b id="debug_keywords" '.get_var_name($var).' /b = '.$out.' /pre if ($exit) exit;//為真則退出 * 調試輸出變量,對象的值。 * 參數任意個(任意類型的變量) * @return echofunction debug_out(){ $avg_num = func_num_args(); $avg_list= func_get_args(); ob_start(); for($i=0; $i $avg_num; $i++) { pr($avg_list[$i]); $out=ob_get_clean(); echo $out; exit;PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品狼人色视频一区| 久久国内精品一国内精品| 国产精品一区二区久久精品| 日韩精品免费在线播放| 91av视频在线播放| 国产精品福利片| 日本高清不卡的在线| 久久夜精品香蕉| 久久精品亚洲国产| 92看片淫黄大片欧美看国产片| 欧美午夜片在线免费观看| 九九精品视频在线观看| 欧美成人在线免费视频| 精品夜色国产国偷在线| 97成人精品视频在线观看| 欧美激情一区二区三区高清视频| 日韩欧美国产中文字幕| 国产精品h在线观看| 97久久精品在线| 国内精品视频久久| 色综合天天综合网国产成人网| 成人激情春色网| 亚洲精品一区二三区不卡| 国产欧美日韩免费| 日韩av观看网址| 久久久亚洲网站| 国产亚洲福利一区| 国产精品普通话| 欧美伊久线香蕉线新在线| 92裸体在线视频网站| 欧美精品在线观看| 国产亚洲日本欧美韩国| 中文字幕在线视频日韩| 国产成人精品网站| 在线观看久久久久久| 欧美高清不卡在线| 国产综合久久久久久| 日韩精品在线影院| 日韩国产精品一区| 一区二区欧美在线| 欧美精品一区二区三区国产精品| 欧美噜噜久久久xxx| 欧美成人精品三级在线观看| 色综合久久精品亚洲国产| 国产精品久久久av久久久| 蜜臀久久99精品久久久久久宅男| 欧美日韩精品在线| 欧美老少配视频| 91精品视频大全| 668精品在线视频| 高清欧美性猛交xxxx| 中文字幕在线看视频国产欧美在线看完整| 国产精品久久久av| 亚洲成人动漫在线播放| 精品伊人久久97| 中文字幕v亚洲ⅴv天堂| 久热国产精品视频| 亚洲女成人图区| 欧美午夜宅男影院在线观看| 亚洲最大av在线| 久热精品视频在线免费观看| 精品国偷自产在线视频99| 国产精品扒开腿做爽爽爽视频| 日韩在线观看你懂的| 国产亚洲精品久久| 欧美日韩国产丝袜美女| 狠狠躁夜夜躁久久躁别揉| 法国裸体一区二区| 国产美女搞久久| 欧美在线性爱视频| 亚洲黄一区二区| 国产欧美一区二区三区久久| 亚洲欧美在线一区二区| 亚洲二区在线播放视频| 亚洲精品白浆高清久久久久久| 在线电影av不卡网址| 伊人久久久久久久久久| 精品亚洲aⅴ在线观看| 色哟哟网站入口亚洲精品| 91香蕉国产在线观看| 中文字幕精品一区二区精品| 欧洲亚洲妇女av| 国产最新精品视频| 欧美一级淫片播放口| 亚洲精品之草原avav久久| 国产网站欧美日韩免费精品在线观看| 国产日韩综合一区二区性色av| 亚洲精品久久久久中文字幕二区| 欧美视频精品一区| 国内精品视频在线| 国产精品久久久久9999| 国产精品99久久99久久久二8| 日韩免费电影在线观看| 国产精品青青在线观看爽香蕉| 亚洲的天堂在线中文字幕| 日本a级片电影一区二区| 亚洲综合国产精品| 91av视频在线播放| 亚洲最大成人网色| 色狠狠av一区二区三区香蕉蜜桃| 97在线视频免费播放| 久久综合国产精品台湾中文娱乐网| 亚洲成人精品视频在线观看| 色噜噜狠狠狠综合曰曰曰| 国产成人福利视频| 亚洲精品av在线播放| 亚洲欧美综合精品久久成人| 国产日韩欧美91| 国产精品盗摄久久久| 亚洲黄色av网站| 欧美极品美女视频网站在线观看免费| 日韩在线观看高清| 欧美成人激情视频免费观看| 欧美尺度大的性做爰视频| 亚洲丁香婷深爱综合| 欧美日韩美女在线观看| 久久精品一偷一偷国产| 久久久中文字幕| 欧美日韩在线影院| 欧美性xxxxxxxxx| 97视频在线观看亚洲| 久久久久久久av| 亚洲国产一区二区三区四区| 亚洲欧洲日韩国产| 国产一区二区激情| 欧美成人自拍视频| 最近2019年日本中文免费字幕| 成人久久久久久| 国产精品亚洲片夜色在线| 久久久国产一区二区| 亚洲电影天堂av| 韩国美女主播一区| 亚洲美女在线视频| 亚洲一区二区三区777| 91国产视频在线| www.美女亚洲精品| 日韩中文视频免费在线观看| 国产主播精品在线| 欧美精品一本久久男人的天堂| 欧美精品www| 国产日产欧美精品| 91精品国产91久久久久久吃药| 成人国内精品久久久久一区| 色视频www在线播放国产成人| 色婷婷**av毛片一区| 国产精品一区二区三区成人| 91成人天堂久久成人| 亚洲精品av在线| 神马国产精品影院av| 国产精品欧美一区二区三区奶水| 久久久91精品国产一区不卡| 欧美激情a在线| 久久久免费精品视频| 久久精品国产亚洲一区二区| 亚洲乱码一区av黑人高潮| 亚洲激情视频网站| 91干在线观看| 亚洲一二三在线| 国产精品狼人色视频一区| 精品国产31久久久久久| 一区二区日韩精品| 91香蕉亚洲精品| 日韩av第一页| 国产精品精品久久久|