摘要:之前,第三方編譯是管理器,是解釋器之后,官方自帶,與模式。又是解釋器,又是管理器以模塊模式運(yùn)行常見(jiàn)配置數(shù)組排序
PHP引用變量
什么是引用變量?如何定義引用變量?
引用意味著用不同的名字訪問(wèn)同一個(gè)內(nèi)容
定義引用變量:使用&
引用變量的工作原理
普通變量的工作原理
$a = range(0,10000); var_dump(memory_get_usage()); //int(742072) $b = $a; var_dump(memory_get_usage()); //int(742096) $a = range(0,30000); var_dump(memory_get_usage()); //int(1532648)
引用變量的工作原理
$a = range(0,10000); var_dump(memory_get_usage()); //int(742072) $b = &$a; var_dump(memory_get_usage()); //int(742096) $a = range(0,30000); var_dump(memory_get_usage()); //int(1135312)
注意: 1、引用變量一旦定義,此變量永遠(yuǎn)是引用變量,不可能再變回普通變量 2、引用變量可以修改引用的值,例如: $a = "a"; $c = "c"; $b = &$a; $b = &$c; //修改引用常量及數(shù)據(jù)類(lèi)型
字符串的定義方式及各自區(qū)別
單引號(hào)、雙引號(hào)、heredoc、newdoc
單引號(hào):不能解析變量,只能解析單引號(hào)(")和反斜線()轉(zhuǎn)義字符,比雙引號(hào)效率高 雙引號(hào):解析變量(可使用{}括起來(lái)),能解析所有轉(zhuǎn)義字符 heredoc:功能類(lèi)似雙引號(hào)(用于大字符串) newdoc: 功能類(lèi)似單引號(hào)
//heredoc定義 $str = <<數(shù)據(jù)類(lèi)型
浮點(diǎn)數(shù):不能用于運(yùn)算/比較運(yùn)算,因?yàn)楦↑c(diǎn)數(shù)不是精確的
FALSE七種情況:0、0.0、"0"、""、NULL、false、array()
超全局?jǐn)?shù)組(九種):$GLOBALS、$_GET、$_POST、$_SERVER、$_SESSION、$_COOKIE、$_FILES、$_ENV、$_REQUEST //$GLOBALS包含其他8種 //$_REQUEST包含$_GET、$_POST和$_COOKIE $_SERVER["REQUESR_URI"]與$_SERVER["PATH_INFO"]區(qū)別 http://localhost/aaa/index.php/foo/bar.html?p=222&q=333 $_SERVER["QUERY_STRING"] = "p=222&q=333"; $_SERVER["REQUEST_URI"] = "/aaa/index.php/foo/bar.html?p=222&q=333"; $_SERVER["SCRIPT_NAME"] = "/aaa/index.php"; $_SERVER["PHP_SELF"] = "/aaa/index.php"; $_SERVER["PATH_INFO"] = ‘/foo/bar.html’常量
2種定義方式:define()與constdefine()函數(shù) const是語(yǔ)言結(jié)構(gòu) 區(qū)別 define()不可以定義類(lèi)常量預(yù)定義常量__FILE__、__LINE__運(yùn)算符PHP錯(cuò)誤運(yùn)算符@
當(dāng)將其放置在一個(gè)PHP表達(dá)式之前,該表達(dá)式可能產(chǎn)生的任何錯(cuò)誤信息都將被忽略掉運(yùn)算符的優(yōu)先級(jí)
運(yùn)算符優(yōu)先級(jí)
遞增/遞減 > ! > 算術(shù)運(yùn)算符 > 大小比較 > (不)相等比較 > 引用 > ^ > | > 邏輯與&& > 邏輯或|| > 三目 > 賦值 > and > xor > or0 && $b = 3 > 0){ echo "true"; }else{ echo "false"; } ?> // 相當(dāng)于 if($a = ((3 > 0) && ($b = 3 > 0)))比較運(yùn)算符
==與===區(qū)別等值判斷(FALSE七種情況)邏輯運(yùn)算符
短路作用: 邏輯與&& > 邏輯或|| > 三目 > 賦值 > and > xor > or遞增/遞減運(yùn)算符
1、遞增/遞減不影響布爾值 2、遞減NULL值沒(méi)有效果 3、遞增NULL值為1 4、遞增/遞減位置不同效果不同流程控制PHP遍歷數(shù)組的三種方式及各自區(qū)別
1.for循環(huán)(while/do...while)
2.foreach循環(huán)
3.while、each()、list()組合區(qū)別: for循環(huán):只能遍歷索引數(shù)組 foreach循環(huán):能遍歷關(guān)聯(lián)數(shù)組和索引數(shù)組 while、each()、list()組合:能遍歷關(guān)聯(lián)數(shù)組和索引數(shù)組 foreach循環(huán)遍歷數(shù)組前,會(huì)對(duì)數(shù)組進(jìn)行reset()操作 while、each()、list()組合則不會(huì)進(jìn)行reset()操作PHP分支結(jié)構(gòu)
if...elseif... 原則:可能性大的放在前面
switch...case... 與 if 區(qū)別: 判斷參數(shù)的數(shù)據(jù)類(lèi)型只能是整形、浮點(diǎn)、字符串switch...case...中,如果使用continue與break等價(jià) 如果switch...case...外層還有for,那么使用continue2才可以跳出循環(huán) 一般switch要比if性能高自定義函數(shù)及內(nèi)部函數(shù)變量作用域
大部分變量只有一個(gè)多帶帶的范圍,這個(gè)多帶帶范圍跨度包含了include與requires的文件如果在非類(lèi)中引入文件,該文件內(nèi)部可以使用全局變量和函數(shù) 如果在類(lèi)中引入文件,該文件內(nèi)部可以使用函數(shù)、類(lèi)的方法、類(lèi)的屬性函數(shù)/方法傳參
傳參分2種:
1、值傳遞
2、引用傳遞(函數(shù)修改該值,傳遞的參數(shù)必須是變量)//引用傳遞函數(shù)定義 $a = 1; function fn(&$a){ return ++$a; } echo fn($a); //2函數(shù)返回值
可以返回任意數(shù)據(jù)類(lèi)型的值
省略return 默認(rèn)返回NULL,如果要返回多個(gè)值請(qǐng)使用數(shù)組函數(shù)2種方式返回 1、普通返回 2、引用返回 function &fn(){ $a = 5; return $a; } $b = &fn();讓函數(shù)內(nèi)部修改外部變量的值,使用引用傳參
讓外部變量修改函數(shù)內(nèi)部變量的值,使用引用返回引入外部文件
引入的代碼將繼承引入位置的作用域,即使用include或require位置可以使用的變量
include與require區(qū)別系統(tǒng)內(nèi)置函數(shù)
時(shí)間日期函數(shù)date()、strtotime()、mktime()、time()、microtime()、date_default_timezone_set()IP處理函數(shù)ip2long()、long2ip()打印處理函數(shù)print()、printf()、print_r()、echo、sprintf()、var_dump()、var_export()序列化及反序列化函數(shù)serialize()、unserialize()字符串處理函數(shù)trim()、數(shù)組處理函數(shù)array_rande()、正則表達(dá)式正則表達(dá)式作用(四種)
分割、查找、匹配、替換 作用對(duì)象:字符串、字符串、字符串(重要的事情記3遍)正則表達(dá)式的組成部分
分隔符:正斜線(/)、hash符(#)、取反符號(hào)(~) 通用原子:d(匹配數(shù)字)、D、w(匹配數(shù)字、字母、下劃線)、W、s(匹配空格)、S 元字符: 量詞 ?、+、*、{n}、{n,}、{n,m} 通配符 . 范圍匹配 []、[-]、[^] 模式修正符:i、m、u、U向后引用
題目:把字符串 "abc" 替換為 "abc" 如何使用正則做到?$str = "abc"; $pattern = "/(.*)/"; preg_replace($pattern, "1", $str);貪婪模式
題目:把字符串 "abcdef" 替換為 "abcdef" 如何使用正則做到?$str = "abcdef"; $pattern = "/(.*?)/"; $pattern = "/(.*)/U"; preg_replace($pattern, "1", $str);注意:默認(rèn)是貪婪模式正則表達(dá)式PHP函數(shù)
preg_match()、preg_match_all()、preg_replace()、preg_split()中文匹配問(wèn)題
中文分utf-8與gbk兩種編碼,他們正則表達(dá)式不同 utf-8: 0x4e00 - 0x9fa5 模式修正符需要使用u文件及目錄處理打開(kāi)文件函數(shù):fopen()
用于打開(kāi)一個(gè)文件,打開(kāi)時(shí)需要指定一個(gè)打開(kāi)模式
打開(kāi)模式:r/r+、w/w+、x/x+、a/a+、b、t
r+ 追加寫(xiě) w 覆蓋寫(xiě)讀取文件函數(shù):fread()/fgets()/fgetc()
fgets() 讀取一行
fgetc() 讀取字符寫(xiě)入文件函數(shù):fwrite()/fputs()
關(guān)閉文件函數(shù):fclose()
不需要fopen()都能操作文件
file_put_contents()
file_get_contents()訪問(wèn)遠(yuǎn)程文件(不推薦開(kāi)啟)
開(kāi)啟allow_url_fopen() ,http協(xié)議只能使用只讀,ftp協(xié)議可以只能只讀或只寫(xiě)目錄操作函數(shù)
目錄名稱(chēng):basename()、dirname()、pathinfo()
目錄讀取:opendir()、readdir()、closedir()、rewinddir()
目錄刪除:rmdir()
目錄創(chuàng)建:mkdir()目錄遍歷
//遍歷 function loopDir($dir){ if(is_dir($dir)){ if($handle = opendir($dir)){ while (false !== ($file = readdir($handle))) { if ($file != "." && $file != "..") { echo $file." "; if(filetype($dir.DIRECTORY_SEPARATOR.$file === "dir")){ loopDir($dir.DIRECTORY_SEPARATOR.$file); } } } } }else{ echo basename($file)." "; } }會(huì)話控制會(huì)話控制的三種實(shí)現(xiàn)
1、使用URL帶參數(shù)的方式(不安全,不推薦) 2、cookie 3、session如果禁用cookie后,該如何實(shí)現(xiàn)會(huì)話控制?
只能通過(guò)URL把SessionID傳過(guò)去">下一頁(yè) 簡(jiǎn)化: 下一頁(yè)面向?qū)ο?/b>訪問(wèn)控制符
public、protected、private網(wǎng)絡(luò)協(xié)議GET與POST區(qū)別
1、GET可以收藏成瀏覽器書(shū)簽,而POST不行 2、GET可以保存在瀏覽器歷史記錄里,而POST不行 3、GET安全性相比POST差 4、GET請(qǐng)求數(shù)據(jù)編碼:application/x-www-form-urlencoded,而POST則除了application/x-www-form-urlencoded編碼,還可以是multipart/form-data或者application/json或者text/xml 5、GET請(qǐng)求參數(shù)是有長(zhǎng)度限制的,url最多2048個(gè)字節(jié),而POST沒(méi)有限制四種數(shù)據(jù)編碼
開(kāi)發(fā)環(huán)境及PHP配置版本控制軟件
PHP運(yùn)行原理
主要了解 CGI、FastCGI、PHP-FPMCGI:是一種通訊協(xié)議(已經(jīng)過(guò)時(shí),性能低下) FastCGI:也是一種通訊協(xié)議,是CGI的升級(jí)版(現(xiàn)在推薦使用) PHP-FPM:是FastCGI進(jìn)程管理器 php-cgi.exe:是PHP腳本解析器,不是FastCGI進(jìn)程管理器PHP 有5種PHP運(yùn)行模式:鏈接1、以CGI模式運(yùn)行PHP LoadModule cgi_module modules/mod_cgi.so //要加載apache自帶模塊Options FollowSymLinks ExecCGI AddHandler cgi-script .php FcgidWrapper "D:/BtSoft/WebSoft/php/7.1/php-cgi.exe" .php //如果同時(shí)打開(kāi)多個(gè)則會(huì)有很多php-cgi.exe,并且在執(zhí)行完成之后消失:2、以FastCGI模式運(yùn)行PHP FastCGI模式根據(jù)進(jìn)程管理器的不同可以分為:Apache內(nèi)置進(jìn)程管理器,PHP-FPM進(jìn)程管理器 Apache內(nèi)置進(jìn)程管理器: LoadModule fcgid_module modules/mod_fcgid.so //要加載apache模塊,該模塊要多帶帶下載FastCgiServer /home/weiyanyan/local/apache/cgi-bin/php-cgi -processes 20 AddType application/x-httpd-php .php AddHandler php-fastcgi .php Action php-fastcgi /cgi-bin/php-cgi PHP-FPM進(jìn)程管理器: LoadModule fastcgi_module modules/mod_fcgid.soFastCgiExternalServer /home/weiyanyan/local/apache/cgi-bin/php-cgi -host 127.0.0.1:9000 AddType application/x-httpd-php .php AddHandler php-fastcgi .php Action php-fastcgi /cgi-bin/php-cgi php54是之前是一種關(guān)系,php54之后另一種關(guān)系。
php54之前,php-fpm(第三方編譯)是管理器,php-cgi是解釋器
php54之后,php-fpm(官方自帶),master 與 pool 模式。php-fpm 和 php-cgi 沒(méi)有關(guān)系了。php-fpm又是解釋器,又是管理器3、以Apache模塊模式運(yùn)行PHP LoadModule php5_module "C:/php5/php5apache2_2.dll" AddType application/x-httpd-php .phpPHP常見(jiàn)配置
PHP 數(shù)組排序
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/25924.html
摘要:而在面試過(guò)程中,也是經(jīng)常會(huì)遇到的,所以,無(wú)論是面試準(zhǔn)備還是日常開(kāi)發(fā),我們都應(yīng)該關(guān)注這方面的東西。二分法的基本做法是確定要查找的區(qū)間。區(qū)間內(nèi)選取二分點(diǎn)。根據(jù)二分點(diǎn)的值,綜合左右區(qū)間情況以及求解的目的,舍去一半無(wú)用的區(qū)間。 showImg(https://images.pexels.com/photos/935977/pexels-photo-935977.jpeg); 前言 面試是你進(jìn)入...
摘要:準(zhǔn)備不充分第一輪不過(guò)第一家,廣州琶洲一家環(huán)境超級(jí)好,福利也不錯(cuò),主營(yíng)美顏的公司,這也是我最感遺憾的一次面試機(jī)會(huì)。主要是第一輪面試第一個(gè)問(wèn)題的種數(shù)據(jù)類(lèi)型,只答了一個(gè)。 前言 首先需要說(shuō)明的一點(diǎn),本人只是一個(gè)畢業(yè)一年,只有一年工作經(jīng)驗(yàn)的普通PHPer,能力有限,這篇文章只是將我這幾周來(lái)的感受和體驗(yàn)分享出來(lái),希望能給許多像我一樣,或者互聯(lián)網(wǎng)行業(yè)的新手帶來(lái)一些收獲,當(dāng)然哪里說(shuō)的不對(duì)或不足還是希...
摘要:最近面試了不少公司,正好把記得的問(wèn)題做個(gè)總結(jié)。抽象類(lèi)的接口的區(qū)別,不在于編程實(shí)現(xiàn),而在于程序設(shè)計(jì)模式的不同。一般來(lái)講,抽象用于不同的事物,而接口用于事物的行為。 最近面試了不少公司,正好把記得的問(wèn)題做個(gè)總結(jié)。 本文 github 會(huì)持續(xù)更新 公眾號(hào) 搜索 蘇生不惑 或者掃二維碼關(guān)注,每周更新。 showImg(https://segmentfault.com/img/bVbsYyM?w...
摘要:最近面試了不少公司,正好把記得的問(wèn)題做個(gè)總結(jié)。抽象類(lèi)的接口的區(qū)別,不在于編程實(shí)現(xiàn),而在于程序設(shè)計(jì)模式的不同。一般來(lái)講,抽象用于不同的事物,而接口用于事物的行為。 最近面試了不少公司,正好把記得的問(wèn)題做個(gè)總結(jié)。 本文 github 會(huì)持續(xù)更新 公眾號(hào) 搜索 蘇生不惑 或者掃二維碼關(guān)注,每周更新。 showImg(https://segmentfault.com/img/bVbsYyM?w...
閱讀 2478·2021-09-22 16:05
閱讀 2961·2021-09-10 11:24
閱讀 3631·2019-08-30 12:47
閱讀 2940·2019-08-29 15:42
閱讀 3379·2019-08-29 15:32
閱讀 1944·2019-08-26 11:48
閱讀 1081·2019-08-23 14:40
閱讀 902·2019-08-23 14:33