<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                [TOC] ## 什么是引用變量?在PHP當中,用什么符號定義引用變量? 1. PHP的引用變量的概念及定義方式 **概念**: 在PHP中引用意味著用不同的名字訪問同一個變量內容。 **定義方式**: 使用&符號 2. 延伸:PHP引用變量的原理 普通賦值 ``` //定義一個變量 $a= range(8,1988) //定義變量b,將a變量的值賦值給b // COW機制 Copy On Write $b=$a; //此時, $b和$a指向同一個內存地址,只有當$a改變時,$b才指向新的地址 //對a進行修改 $a= range(8,1999) ``` 引用賦值 ``` $b=&$a ``` $a和$b永遠指向一個變量地址 ## 回話控制 ### cookie 保存本地中 ``` //賦值 setcookie($name, $value, $expire, $path, $domain, $seure); //取值 $_COOKIE($name); //刪除 setcookie("TestCookie", "", time() - 10000 ); //設置數組 setcookie("user[three]", "cookiethree"); setcookie("user[two]", "cookietwo"); setcookie("user[one]", "cookieone"); ``` ### session 保存在服務器中 ``` //開始 session_start(); //賦值 $_SESSION['favcolor'] = 'green'; //清空session $_SESSION=[]; //刪除sesion及cookie中的session_id session_destroy(); //刪除 unset($_SESSION["newsession"]); //以下設置表示,在超過1440的sesison,有百分之一的概率刪除session, ini_set('session.gc_probability', 1); ini_set('session.gc_divisor', 100); ini_set('session.gc_maxlifetime', 1440); //設置過期時間 ``` ### 傳遞session id 可在cookie被禁用時,也可以使用session_id 常量SID 如果開啟了 cookie SID 就為空 如果沒開啟 SID 等價于 - PHPSESSIONID=session_id()的值, [如何傳遞 session_id 參考]( https://segmentfault.com/q/1010000007715137) ``` < a href="1.php?<? php echo SID ;?>">下個頁面</a> //等價 < a href="1.php?<?php echo session_name() ;?>= <?php session_id() ;?>">下個頁</a> ``` ### Session存儲方式 如果有部署了多個服務器,那么 session_id 不能存在文件中,而是通過`session_set_save_handler`設置 存入`MYSQL、 Memcache、 Redis` 中 [php 官網有存儲在sql 中的類實現方法](http://php.net/manual/zh/function.session-set-save-handler.php) ## 常用設計模式 常見設計模式:工廠模式、單例模式、注冊樹模式、適配器模式 觀察者模式和策略模式 ## 字符串的定義方式 1. 單引號 2. 雙引號 3. heredoc 類似雙引號 ``` $str = <<<EoT ... EoT ``` 5. newdoc 類似單引號 ``` $str = <<<'EoT' ... 'EoT' ``` ## 知識點延伸 ### 浮點數不能進行比較運算 浮點轉為 cpu 會損耗, ``` $a=0.8; $b=0.1; if ($a+$b==0.8){ echo $a+$b; } ``` ### 布爾類型 FALSE的七種情況 整型0、浮點00、布爾 false、空字符串、0字符串、空數組、NULL ### 數組類型 ### 超全局數組 `$GLOBALS、$_GET、$_POST、$_REQUEST、$_SESSION、 $_COOKIE、$_SERVER、$_FILES、$_ENV` $GLOBALS:包含所有已上所有元素 ``` $_SERVER['SERVER_ADDR′] //獲取服務器的 ip $_SERVER['REMOTE_ADDR'] //用戶 ip $_SERVER['SERVER_NAME'] //獲取服務器的域名 www.example.com $_SERVER[ REQUEST_TIME'] //請求時間 $_SERVER['QUERY_STRING'] //?后的參數 $_GET 參數 $_SERVER['HTTP_REFERER'] //從哪一頁進來 $_SERVER['HTTP_USER_AGENT'] //瀏覽器信息 $_SERVER['REQUEST_URI'] // 域名后的所有信息 /demo/index.php?name=cpj&age=12 $_SERVER['PATH_INFO'] // 網址路徑信息 ,一般用于路由 ``` ### 三種情況 為NULL 直接賦值為NULL、未定義的變量、 unset銷毀的變量 ### 常量 const、 define const更快,是語言結構, define是函數 const 可以在類中定義常量,define 不行 ### 優先級 `遞增減 > ! > 算數運算符 > 大小比較 > (不)相等比較 > 引用 > 位運算符(^) > 位運算符(|) > 邏輯與 > 邏輯或 > 三目運算 > 賦值 > and > xor > or ` 短路作用:|| 和 && 與 and 和 or 的優先級不同; ``` //短路作用 $a = true || $b == 3; // $b 不會執行; 相當于$a =( true || $b == 3); $b = false && $a == 1; // $b 為false 此表達式不會執行 //優先級問題: $a = false || true; // $a = true; $b = false or true; // $b = false,整體是true; ``` 真題 ```php $a = 0; $b = 0; if($a = 3 > 0 || $b = 3 > 0){ //短路 $a=((3>0)||$b=3>0) 執行3>0后就短路,所以$ a=true $a++; $b++; echo $a; //$a = 1 (true); echo $b; //$b = 1; } ``` ## 流程控制 ### if與 elseif 把 if 范圍小的放前面 ### switch ...case 控制表達式只能是 整型,浮點型和字符串 continue語句作用到 switch的作用類似于 break ### break break 的數字代表跳出幾次循環 ``` for ($i = 0; $i < 3; $i++){ echo '外層循環'.$i.' 開始'."\n"; for ($j = 0; $j < 2; $j++){ if ($i == 1){ break 2; //使用break 2直接跳出2層循環 } echo '內層循環'.$i.'-'.$j."\n"; } echo '外層循環'.$i.' 結束'."\n"; } ``` ## 函數 ## 函數引用 從函數返回一個引用,必須在函數聲明和指派返回值給一個變量時都使用引用運算符`&` ``` function myFunc(){ static $b= 10; return $b; } $a = myFunc(); $a = & myFunc(); //$a 與$ b 互為應用 $a = 100; echo myFunc(); //100 ``` ### 打印函數 ``` //打印一個字符串 print() //打印一個或多個字符串 echo() //格式化輸出 $num = 2.12; $d='123a'; printf("%.1f---%d",$num,$d); //2.1---123 //返回格式化值 $num = 2.12; $d='123a'; echo sprintf("%.1f---%d",$num,$d); //2.1---123 ``` ## 正則 ``` 正則表達式的作用:分割、查找、匹配、替換字符串 分隔符:正斜線(/)、hash符號(#) 以及取反符號(~) 通用原子:\d、\D、\w、\W、\s、\S 元字符: * ? A $ + {n } {n,} {n,m} [] () [^]| [-] 模式修正符: i m e s U x A D u ``` 后向引用 ```php $str='<b>abc</b>'; Pattern= '/<b>(.*)<\/b>/'; preg_replace($pattern, '\\1', $str); ``` 貪婪模式 ![](https://box.kancloud.cn/4e7bcc1b65b7b7e3fcbc32c875966344_1760x516.jpg) 用`.*?` 取消貪婪模式 ![](https://box.kancloud.cn/b1f80ac13e911b6f86f60f58448fca0f_1682x512.jpg) 用 `U`取消貪婪 `$pattern = '/<b>.*</b>/U'` 常用函數 ``` preg_match(), preg_match_all(), Preg_replace(), preg_split() ``` 中文匹配 UTF-8漢字編碼范圍是`0x4e00-0x9fa5`, ANSI(gb2312)環境下,`0xb0-0xf7`,`0xa1-0xfe` UTF-8要使用u模式修正符使模式字符串被當成UTF-8, ANSI(gb2312)環境下,要使用chr將Asc碼轉換為字符 ``` $str='中文' Pattern ='/[\xt{4e001-\x{t9fa5}]+/u'; ``` 匹配 img 的 src 值 ```php $str='<img alt="測試" id="aaa" src="aaa.jpg" />'; $pattern='/<img. *?src="(.*?).*?\/?>/i' // .*? 為取消貪婪 Preg_match( $Pattern, $str, $match); ``` ## 文件操作 ### 文件讀取,寫入 ``` 模式 描述 r 打開文件為只讀。文件指針在文件的開頭開始。 w 打開文件為只寫。刪除文件的內容或創建一個新的文件,如果它不存在。文件指針在文件的開頭開始。 a 打開文件為只寫。文件中的現有數據會被保留。文件指針在文件結尾開始。創建新的文件,如果文件不存在。 x 創建新文件為只寫。返回 FALSE 和錯誤,如果文件已存在。 r+ 打開文件為讀/寫、文件指針在文件開頭開始。 w+ 打開文件為讀/寫。刪除文件內容或創建新文件,如果它不存在。文件指針在文件開頭開始。 a+ 打開文件為讀/寫。文件中已有的數據會被保留。文件指針在文件結尾開始。創建新文件,如果它不存在。 x+ 創建新文件為讀/寫。返回 FALSE 和錯誤,如果文件已存在。 ``` 打開 `fopen("webdictionary.txt", "r")` 讀取 ``` fread() 讀取文件 fgets() 讀取一行 fgetc() 讀取一個字符 ``` 關閉 `fclose()` file_get_content() 與 file_put_content() 性能更好 其他 ``` file() 以數組形式讀取字符串 ``` ### 目錄操作函數 ``` 名稱相關: basename()、 dirname()、 patino() 目錄讀取: opendir()、 readdir()、 closedir()、 rewinder() 目錄刪除: rmdir() //只有目錄中沒有文件,才可以刪除 目錄創建: mkdir() ``` ### 其他函數 ``` 文件大小: filesize() //目錄文件大小,需要遍歷每個文件 目錄大小: disk_free_space() //磁盤可用空間、 disk_total_space() //總磁盤空間 文件拷貝:copy() 刪除文件: unlink() 文件類型: filetype() 重命名文件或者目錄: rename() 文件截取: truncate() 文件屬性: file_exists()、 is_readable()、 is_writable()、 is_executable()、 filectime()、 fileatime()、 fillemtime() ``` 考題范圍 文件操作模式,目錄的遍歷,目錄的刪除 ``` //在文件開頭寫入 hello word $path = 'demo.txt'; $handle = fopen($path, 'r'); $content = fread($handle, filesize($path)); $content = "hello word" . $content; fclose($handle); //寫入 $handle = fopen($path, 'w'); fwrite($handle, $content); fclose($handle); ``` 目錄的遍歷 ``` function loopdir($dir){ $handle = opendir($dir); while(false!==($file=readdir($handle))){ if ($file !=='.' && $file!=='.'){ echo $file."\n"; if (filetype($dir.'/'.$file)=='dir'){ loopdir($dir.'.'.$file); } } } } loopdir($dir); ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看