第一篇:傳智播客 PHP程序員筆記第一天
做網(wǎng)站 Web程序。
需要制作一臺(tái)可以在網(wǎng)絡(luò)上被別人訪問到的機(jī)器。
安裝了瀏覽器的計(jì)算機(jī):
browser端 能夠提供網(wǎng)絡(luò)資源的計(jì)算機(jī):(網(wǎng)站在這臺(tái)計(jì)算機(jī)上),能夠提供某種服務(wù)。Server端。
B/S是什么意思? 瀏覽器/服務(wù)器的架構(gòu):
請求:瀏覽器端向服務(wù)器端發(fā)送數(shù)據(jù)。Request 響應(yīng):服務(wù)器向?yàn)g覽器端發(fā)送數(shù)據(jù)?;貞?yīng),Response
什么樣的計(jì)算機(jī)叫做服務(wù)器端? 安裝了服務(wù)器軟件的計(jì)算機(jī)。
Web服務(wù)器軟件:iis,nginx,apache。
其中apache還是目前與php配合使用最多的服務(wù)器軟件:
安裝apache這個(gè)軟件,使jsj成為一臺(tái)web服務(wù)器。
http:// Apache的默認(rèn)的文檔目錄 apache的安裝目錄下/htdocs/
什么是靜態(tài)網(wǎng)站,動(dòng)態(tài)網(wǎng)站?
靜態(tài),網(wǎng)站上所有的內(nèi)容,都是由靜態(tài)頁面提供的。
動(dòng)態(tài):網(wǎng)站的內(nèi)容,是來源于某個(gè)數(shù)據(jù)源(數(shù)據(jù)庫,互聯(lián)網(wǎng)),而,在需要展示某些數(shù)據(jù)時(shí),通過某種語言,將數(shù)據(jù)從數(shù)據(jù)源內(nèi)提取,然后再展示到頁面上。
如果需要做動(dòng)態(tài)網(wǎng)站,需要
1,數(shù)據(jù)源(數(shù)據(jù)庫)mysql數(shù)據(jù)庫
2,某種語言(用于提取和展示數(shù)據(jù)之用)PHP
Amp開發(fā):
利用apache作為web服務(wù)器,使別人可以訪問到我們的網(wǎng)站 利用mysql作為數(shù)據(jù)源,可以保存動(dòng)態(tài)網(wǎng)站所需要的數(shù)據(jù) 利用php來獲得某個(gè)操作所需要的數(shù)據(jù)。
小測試: 輸出1-100 編寫php文件:
訪問這個(gè)php文件:
發(fā)現(xiàn),可以訪問到,但是不能解析。
Apache只有提供被訪問的功能,而不能提供解析php代碼的功能。
因此需要安裝php程序,提供解析php代碼的功能:
安裝PHP:
所有的請求都是web服務(wù)器來接收的(apache),但是其中某些資源需要php來處理。通常的處理方式,是將php作為apache內(nèi)部的一個(gè)模塊來管理的。
將php安裝成apache模塊:
使用一個(gè)apache的指令,loadModule來完成:
解壓php的安裝包:
不需要安裝可以直接執(zhí)行 將php軟件復(fù)制到相應(yīng)的目錄: E:/amp/php
由于不需要安裝,目錄內(nèi)的可執(zhí)行文件直接可以使用:
在php目錄內(nèi),有個(gè)文件,就是php為apache提供的apache模塊:
需要使用apache的LoadModule載入這個(gè)模塊即可:
需要在apache的配置文件內(nèi),使用上面的LoadModule指令: apache的配置文件在 apache的安裝目錄/Conf/httpd.conf
增加如下指令即可:
修改配置文件后,需要重啟動(dòng)apache服務(wù)才可以:
配置apache,告知apache,哪樣的前請求需要調(diào)用php來解析,而哪些不需要: 通過請求的資源的后綴名
使用apache的FilesMatch指令來完成: 當(dāng)匹配到php后綴時(shí),調(diào)用php來處理: Apache的配置文件內(nèi):
請求php文件時(shí),php代碼可以執(zhí)行:
大家可以使用phpinfo()函數(shù)來測試以下,當(dāng)前的php運(yùn)行的環(huán)境:
安裝php后,需要配置一些最基本的配置項(xiàng): 修改php的配置文件: Php的安裝目錄/php.ini
根據(jù)需要,將相應(yīng)的更改成php.ini即可:
由于php作為apache一個(gè)模塊,因此需要告知apache,在哪里才能找到php的配置文件。利用apache的指令PhpIniDir來完成:
修改配置文件,達(dá)到某些目的:
1,時(shí)區(qū)
2, php擴(kuò)展文件的目錄。Php的很多功能,并不是內(nèi)置到php的軟件內(nèi)的。在需要使用某個(gè)功能時(shí),再載入即可。這個(gè)擴(kuò)展的功能文件是被保存到某個(gè)目錄內(nèi)的,稱之為php的擴(kuò)展目錄: Extension_dir:
修改完了php的配置,也需要重啟apache才能生效
如果我們的php需要操作數(shù)據(jù)的話,需要利用數(shù)據(jù)軟件了。安裝Mysql。
1,安裝 2,配置
配置mysql的安裝目錄,和mysql數(shù)據(jù)的保存目錄:
安裝完成時(shí),勾選運(yùn)行配置向?qū)В瓿膳渲玫倪^程:
配置字符集:
簡單介紹Mysql: 數(shù)據(jù)庫服務(wù)器:
屬于server端。因此,需要等待某個(gè)程序請求他才可以運(yùn)行。
能夠?qū)ysql數(shù)據(jù)庫服務(wù)器發(fā)出請求的我們稱之為mysql客戶端。
C/S Client客戶端
Server服務(wù)器
在安裝完mysql后,其實(shí)安裝了2個(gè)軟件1,mysql的服務(wù)器端,2,mysql的客戶端。
我們需要使用php來操作mysql。
其實(shí) 在php操作mysql的過程中,php就變成了 mysql的客戶端。
Php能夠作為mysql的客戶端,使用php的php_mysql.dll這個(gè)擴(kuò)展完成,而且,這個(gè)擴(kuò)展不是默認(rèn)開啟的。
開啟相應(yīng)的mysql的操作擴(kuò)展,利用php的指令extension來完成。Php.ini:
B/S C/S
1,服務(wù)器在監(jiān)聽(運(yùn)行),提供某個(gè)服務(wù)
2,瀏覽器或者客戶端,對服務(wù)器發(fā)出請求。在發(fā)送請求時(shí),請求的數(shù)據(jù)一定要按照某種數(shù)據(jù)格式才可以。數(shù)據(jù)格式在網(wǎng)絡(luò)數(shù)據(jù)傳輸時(shí)稱之為網(wǎng)絡(luò)協(xié)議。3,服務(wù)器接收到請求后,會(huì)根據(jù)請求數(shù)據(jù),進(jìn)行相應(yīng)的操作。4,將處理好的結(jié)果返回給瀏覽器(客戶端),回應(yīng)。Response 5,瀏覽器端(客戶端)對回應(yīng)的數(shù)據(jù)進(jìn)行展示輸出,b/s 都是用瀏覽器發(fā)出請求的。
http https c/s架構(gòu),都是采用某個(gè)服務(wù)專用的客戶端發(fā)出的請求。
Bs架構(gòu)通常,任何兩次請求回應(yīng)周期是沒有任何聯(lián)系的。在發(fā)出請求時(shí),都需要先建連接。
Cs通常,在連接一次之后,通常就會(huì)保持住這個(gè)連接,后續(xù)的操作,就不需要再次建立連接了。
PHP與apache聯(lián)系:
1,php作為apache的模塊而存在。loadModule 2,web服務(wù)器與php之間通過 CGI方式產(chǎn)生聯(lián)系。CGI(通用網(wǎng)關(guān)接口),IIS+PHP?,F(xiàn)在CGI被fastCGI。Nginx+PHP
apache的虛擬主機(jī):
通常一個(gè)web服務(wù)器,代理的是一個(gè)網(wǎng)站。
有時(shí)我們需要利用一個(gè)web服務(wù)器,管理多個(gè)站點(diǎn)。不同的站點(diǎn)擁有獨(dú)立的域名。
通過配置apache服務(wù)器,達(dá)到,訪問
Test.kang.com時(shí),看到的是test目錄的內(nèi)容。Shop.kang.com時(shí),看到的是shop目錄的內(nèi)容
Apache的基于域名的虛擬主機(jī)技術(shù):
主機(jī):一個(gè)網(wǎng)站,就是一些php文件的集合,一個(gè)保存php文件的目錄 域名:指向某個(gè)網(wǎng)站的名稱。
通過修改apache配置文件達(dá)到效果:
Apache/comf/httpd.conf 原則上在這個(gè)配置文件內(nèi)寫虛擬主機(jī)的配置就可以了。但是通常我們都是將虛擬主機(jī)的配置寫到某個(gè)單獨(dú)的配置文件內(nèi),然后將這個(gè)虛擬主機(jī)配置文件再載入到apache的這個(gè)httpd.conf配置文件內(nèi)。引入的操作:
虛擬主機(jī)的專門的配置文件:
編輯這個(gè)虛擬主機(jī)文件,增加虛擬主機(jī):
在配置文件內(nèi),每一個(gè)
域名和目錄是一個(gè)虛擬虛擬主機(jī)最基本的必備元素。
完成以上的操作,apache配置已經(jīng)完成,apache上已經(jīng)存在兩個(gè)虛擬主機(jī)了:
在配置了虛擬主機(jī)之后,我們對web服務(wù)器的默認(rèn)訪問(沒有使用配置的虛擬主機(jī)域名的訪問),都會(huì)訪問到默認(rèn)的主機(jī)上。
默認(rèn)的主機(jī):
1,在配置了虛擬主機(jī)后:默認(rèn)的主機(jī)就是 第一個(gè)配置的虛擬主機(jī) 2,在沒有配置虛擬主機(jī)時(shí),是htdocs目錄。
那么怎么才能在使用虛擬主機(jī)的前提下,讓localhost訪問到原來的htdocs?
如何能夠通過在瀏覽器上輸入相應(yīng)的虛擬主機(jī)域名訪問到我們的虛擬主機(jī)呢? 在瀏覽器端,需要通過相應(yīng)的域名,解析成目標(biāo)服務(wù)器的ip地址才可以。
可以通過過瀏覽器端操作系統(tǒng)上自帶的 域名解析文件完成。Hosts
配置虛擬主機(jī)時(shí),常用的配置:
目錄的權(quán)限的配置
利用apache的directory指令段完成配置 看 httpd.conf的配置:
目錄級(jí)別的配置,對當(dāng)前目錄,及其后代目錄有效果。
如果在apache的配置文件內(nèi),沒有對某個(gè)目錄進(jìn)行配置,則采用默認(rèn)的目錄配置
可以通過修改默認(rèn)的配置達(dá)到目的,但是通常是針對目錄進(jìn)行單獨(dú)配置: 增加一個(gè) Directory指令段:
為了將目錄與虛擬主機(jī)聯(lián)系起來,通常在VirtualHost內(nèi),使用Directory指令 Conf/extra/httpd-vhosts.conf
直接訪問目錄的配置:
在訪問目錄時(shí),先檢測當(dāng)前目錄是否配置了目錄索引頁,如果配置了索引頁,則展示索引頁的內(nèi)容。目錄的索引頁使用apache的指令 directoryIndex完成配置。這個(gè)指令是可以寫到directory段內(nèi)。
如果沒有配置目錄索引頁:則需要將目錄的的內(nèi)容以列表的形式顯示出來,但是是通過配置apache的指令options加以配置,是否可以顯示目錄的索引列表。
可以在配置 options時(shí) 增加上允許符號(hào)連接的配置:
Apache的配置文件系統(tǒng):
Apache程序,只會(huì)在apache服務(wù)器啟動(dòng)時(shí),讀取apache配置文件的內(nèi)容,稱之為apache主配置文件。
一旦配置文件的語法出錯(cuò),就會(huì)導(dǎo)致apache服務(wù)器啟動(dòng)失敗,提示:
Apache提供一個(gè)apache的配置文件檢查的功能:
也可以通過 cmd,命令行運(yùn)行:
Apache還有一個(gè)配置文件,稱之為apache的分布式配置文件,apache允許在某個(gè)目錄內(nèi)部,使用獨(dú)立的配置文件,來配置當(dāng)前目錄及其后代目錄的中的一些設(shè)置。但是此時(shí)配置文件名稱,就不是httpd.conf了 而是.htaccess
在這個(gè).htaccess配置文件中配置的內(nèi)容,只能是目錄級(jí)別的配置。
但是默認(rèn)情況下,分布式配置文件是不可以使用的??梢酝ㄟ^在主配置文件中使用apache的 Allowoverride指令加以配置。由于分布式配置文件是配置目錄的,因此 allowoverride也是需要寫到Directory段。
分布式與主配置文件的區(qū)別:
1,主配置文件需要保存到Conf目錄中,而分布式需要保存到所有需要配置的目錄中
2,主配置文件只要在apache啟動(dòng)時(shí),才讀取,而分布式配置文件,在apache訪問到某個(gè)目錄時(shí)都會(huì)讀取一次。
作業(yè)
1,每個(gè)人配置一個(gè)虛擬主機(jī): 域名是 test.ip.com Test.100.com
2,在test.ip.com上增加一個(gè)表單頁面 Welcome.html頁面
最好在表單提交時(shí),驗(yàn)證姓名不能為空,為空給出提示,不能提交。
分析上面的例子:
發(fā)生了幾次請求和回應(yīng)的過程。
第二篇:傳智播客PHP教程.zend.framework視頻教程簡介
[視頻簡介:]
本教程貫穿了兩個(gè)軟件公司常用的兩個(gè)項(xiàng)目,數(shù)據(jù)采集系統(tǒng)和購物車,共分20講,全面細(xì)致的講解了如何正確的使用zend framework框架到網(wǎng)站開發(fā)中,zend framework 是官方推薦的PHP mvc框架,功能強(qiáng)大,后勁十足,也正是它太強(qiáng)大了,所以很多PHP程序員對它望而生畏,不敢去學(xué)習(xí)掌握它,真的有那么難嗎? 呵呵,看完本教程你就會(huì)發(fā)現(xiàn),喔!不過如此。
韓老師這套zf視頻教程是目前市面上講解最全面的zend framework視頻教程,從本質(zhì)上深入淺出的分析了zend framework運(yùn)行原理。
韓順平老師從事多年的軟件開發(fā)和培訓(xùn)教學(xué),非常清楚那些容易使新手困惑的問題,在學(xué)習(xí)過程中會(huì)碰到的攔路虎,韓老師結(jié)合了多年實(shí)際開發(fā)與教學(xué)經(jīng)驗(yàn),收集了眾多學(xué)員在學(xué)習(xí)中常提到的問題,對平時(shí)講課的內(nèi)容進(jìn)行了精心整理。讀者從本視頻中不僅可以學(xué)習(xí)到zend framework框架本身方面的知識(shí),還能學(xué)到了許多編程思想和實(shí)際操作手法,仿佛韓老師在你面前進(jìn)行現(xiàn)場演示一樣。本視頻不僅全面的介紹了zend framework本身,最重要還交會(huì)讀者去掌握編程思想,找到編程感覺,而不是死記硬背語言本身,視頻中涉及到的應(yīng)用問題分析,遠(yuǎn)遠(yuǎn)超了一個(gè)PHP程序員在學(xué)習(xí)和應(yīng)用zend framework過程中所有可能碰到的問題。
本視頻不僅講概念,講怎么做,還告訴讀者為什么;不僅講操作技能,還貫穿一些系統(tǒng)的理論,這樣讀者才不至于不明不白,或是似乎明白,但不知道具體該怎么干。本視頻一步步引導(dǎo)讀者深入,使讀者輕松愉快、興趣盎然、水到渠成、潛移默化地掌握PHP編程及許多其他的軟件開發(fā)思想。
[聲明:]
本課程是由傳智播客韓順平老師錄制,任何人不能用此教程牟利,違者必究。但是:在不收取其他人費(fèi)用的前提下,您可以自由的分發(fā)此視頻教程。
[聯(lián)系我們:]
在學(xué)習(xí)過程中如果遇到問題可以通過以下聯(lián)系方式與我們?nèi)〉寐?lián)系,另外還有更多傳智播客PHP內(nèi)部視頻見:
網(wǎng)址:http://php.itcast.cn 或者 http://
電話:010-51552111E-mail:hsp@itcast.cn
第三篇:傳智播客PHP教學(xué)之PHP基本語法
PHP基本語法
36講 PHP基本語法介紹 PHP數(shù)據(jù)類型介紹.............................................................................2 37講 整型細(xì)節(jié)說明........................................................................................................................3 38講 布爾細(xì)節(jié) 浮點(diǎn)數(shù)細(xì)節(jié) 字符串細(xì)節(jié) 算術(shù)運(yùn)算符①..........................................................4 39講 算術(shù)運(yùn)算符② 比較運(yùn)算符 邏輯運(yùn)算符............................................................................5 40講 三元運(yùn)算符 類型運(yùn)算符 運(yùn)算符優(yōu)先級(jí)............................................................................9 41講 順序控制 分支控制(if ifelse switch)程序流程圖............................................................10 42講 循環(huán)控制①(for)..................................................................................................................15 43講 循環(huán)控制②(while dowhile)打印金字塔案例..................................................................16 45講 break語句 continue語句 常量.........................................................................................19 46講 函數(shù)基本概念 函數(shù)快速入門............................................................................................22 47講 函數(shù)使用 函數(shù)調(diào)用初步理解............................................................................................25 48講 函數(shù)調(diào)用深入理解 函數(shù)使用注意事項(xiàng)①........................................................................26 49講 函數(shù)使用注意事項(xiàng)② 函數(shù)作業(yè)布置................................................................................29 50講 函數(shù)再回顧 自定義函數(shù)....................................................................................................30 51講 位運(yùn)算①.............................................................................................................................31 52講 位運(yùn)算②.............................................................................................................................32 53講 數(shù)組介紹 數(shù)組的創(chuàng)建 數(shù)組的遍歷..................................................................................34 54講 數(shù)組的引用 數(shù)組使用細(xì)節(jié)①............................................................................................36 55講 數(shù)組使用細(xì)節(jié)② 數(shù)組運(yùn)算符 數(shù)組作業(yè)評(píng)講① 數(shù)組小結(jié)............................................38 56講 排序介紹 冒泡排序............................................................................................................40 57講 選擇排序 插入排序 快速排序..........................................................................................42 58講 順序查找 二分查找............................................................................................................44 59講 多維數(shù)組 數(shù)組作業(yè)評(píng)講②................................................................................................46
36講 PHP基本語法介紹 PHP數(shù)據(jù)類型介紹
更新時(shí)間:2012年11月02日16時(shí)44分 來源: 1.1
單行注釋 // #
php的基本語法加強(qiáng) Parse : 解析 error : 錯(cuò)誤 syntax : 語法
①
php 可以和 html 混合使用 ②
php 的變量的定義使用
//php中,定義一個(gè)變量要以$符號(hào)打頭
$a=890;//我定義了一個(gè)變量, 該變量名叫 $a , 然后給該變量賦了一個(gè)值890 ③
php 的變量的數(shù)據(jù)類型,是變化的,php變量的數(shù)據(jù)類型是由運(yùn)行時(shí)的上下文決定 ④
php區(qū)分大小寫 $i = 89;$I=90;$abc=90;$Abc=900;
⑤
php 的變量的名稱,應(yīng)當(dāng)以字母或者下劃線開頭,不要用數(shù)字開頭,也不要用特殊字符開頭.$3abc=89;
php 數(shù)據(jù)類型有哪些? 有三大類
1.基本數(shù)據(jù)類型 1.1 整型 1.2 小數(shù)型(浮動(dòng)數(shù))包含單精度和雙精度 1.3 布爾類型(表示真,和 假)1.4 字符串 2.復(fù)合數(shù)據(jù)類型 2.1 數(shù)組(array)2.2 對象(object)3.特殊數(shù)據(jù)類型 3.1 null
3.2 資源類型(resource)
37講 整型細(xì)節(jié)說明
更新時(shí)間:2012年11月04日19時(shí)18分 來源: 基本數(shù)據(jù)類型的入門案例: ■ 整型
整數(shù)類型可以表示一個(gè)整數(shù),比如:
$ts=1;$ts=-12;■ 布爾類型
布爾型可以表示真或者假,比如:
$ts=true;$ts=false;■ 小數(shù)類型
小數(shù)類型可以表示一個(gè)小數(shù)(float,double)
$ts=1.12 $ts=3.1415926 ■ 字符串類型
字符串類型可以表示一個(gè)字符串
$ts=“我是一個(gè)好人 hello” 基本概念: 何為定義一個(gè)變量
$a=90;//相當(dāng)于我們定義了一個(gè)變量 $a,并賦值90 ?>
什么叫給變量賦值
$a=78;
$a=8;//表示用新的值替代 78
$a=”hello”;//表示$a 的類型變化.?>
整型的細(xì)節(jié)討論
①在php中一個(gè)整型數(shù)據(jù)可以用十進(jìn)制,也可以用八進(jìn)制和十六進(jìn)制 比如 :
$a = 0123;// 八進(jìn)制數(shù)(是以0開頭)$a = 0x1A;// 十六進(jìn)制數(shù)
0123 = 3*8的0次方 + 2*8的1次方+ 1*8的二次方 =3*1+2*8+1*64=83
0x1A= A*16的0次方 +1*16的一次方=10+16=26
$a=123=3*10的0次方+2*10的1此方+1*10的二次方=3+20+100=123 ② php的整數(shù)都是有符號(hào)數(shù).通過該圖,我們可以看出,php的整數(shù)的二進(jìn)制的最高位表示符號(hào) ③ 通過 PHP_INT_SIZE
可以顯示我們自己的機(jī)器,一個(gè)整數(shù)用幾個(gè)字節(jié)表示 echo PHP_INT_SIZE;
通過PHP_INT_MAX 可以顯示int 最大的數(shù)有多少 echo PHP_INT_MAX;
請問? 為什么 PHP_INT_MAX是 2147483647 我們一起推一下
請問? php 的int 型,負(fù)數(shù)最大表示多少? 負(fù)數(shù)和正數(shù)一樣大 2的31次方減一
④ 如果一個(gè)整數(shù)的范圍超過了最大范圍,則自動(dòng)變成float
38講 布爾細(xì)節(jié) 浮點(diǎn)數(shù)細(xì)節(jié) 字符串細(xì)節(jié) 算術(shù)運(yùn)算符①
更新時(shí)間:2012年11月06日13時(shí)53分 來源: 學(xué)生的問題?
$a=2;問在內(nèi)存中 2是怎樣存在的
00000000 00000000 00000000 00000010-> 0*2的0次方+1*2的一次方+..0=0+2=2 $a=-2 問在內(nèi)存中形式
布爾類型
簡單的說 布爾類型就兩個(gè)值 true, 一個(gè)false;舉例: //布爾類型 $a=true;$b=false;布爾值 FALSE 自身 整型值 0(零)浮點(diǎn)型值 0.0(零)空 字符串, 以及 字符串“0” 不包括任何元素的數(shù)組
不包括任何成員變量的對象(僅PHP 4.0 適用)特殊類型 NULL(包括尚未設(shè)定的變量)
$conn=mysql_connect(“l(fā)ocalhost”,”root”,”root”);if($conn){
echo ?ok?;}else{
echo ?沒有ok?;}
浮點(diǎn)數(shù)的細(xì)節(jié)
1.浮點(diǎn)數(shù)(也叫雙精度數(shù)或?qū)崝?shù))
2.浮點(diǎn)數(shù)的字長和平臺(tái)相關(guān),通常最大值是 1.8e308 并具有 14 位十進(jìn)制數(shù)字的精度(這個(gè)限制很重要)? 精度要從左邊開始的第一個(gè)非0的數(shù)字計(jì)算.字符串的細(xì)節(jié) $a=”hello”;
請問 $a 占用了多個(gè)是字節(jié) 5個(gè)字節(jié) 一個(gè)字符串類型可以表示多大的串?
①理論上,我們對字符串大小沒有限制,即只有不超過內(nèi)存就可.②我們定義字符串的時(shí)候,可以用單引號(hào),也可以使用雙引號(hào) 區(qū)別如下: $i=90;
$user1=“hello$i”;
$user2='hello$i';
echo '
user1='.$user1;
echo '
user2='.$user2;
從上面案例我們看出, 當(dāng)一個(gè)變量包含在 “”號(hào)中時(shí),會(huì)輸出它的值,而包含在?? 中是輸出其字符本身.案例2
如果字符串是包圍在單引號(hào)(?)中, 除了來處理 ” 時(shí),會(huì)輸出 ” 外,其它規(guī)則都一樣
php數(shù)據(jù)類型的自動(dòng)轉(zhuǎn)換
php的表達(dá)式
所謂表達(dá)式,就是任何有值的東西.$a=90+89;
php的算術(shù)運(yùn)算符 +、-、*、/、%
39講 算術(shù)運(yùn)算符② 比較運(yùn)算符 邏輯運(yùn)算符
php的算術(shù)運(yùn)算符
更新時(shí)間:2012年11月08日17時(shí)42分 來源: +、-、*、/、% $a=90;
$b=7;
if($a%$b==0){
echo '能整除';
}else{
echo '不能整除!';
}
++ 和 – 快速入門: $a=90;
$a++;//等價(jià)于 $a=$a+1;
echo $a;
$b=89;
$b--;//等價(jià)于$b=$b-1;
echo '
'.$b;
細(xì)節(jié) 我們的++ 和 – 分為前++ 后 ++ ,--也分為 前--$a=56;$b=$a++;echo $b;echo $a;對上面代碼的分析如下: $a=56;
//$b=$a++;//等價(jià)于 $b=$a;$a=$a+1;
$b=++$a;//等價(jià)于 $a=$a+1;$b=$a;
echo $b.“||”;//-->$b 57
echo $a;//-->$a 57
左加 += 左減-=
左乘 *= 左除 /= 左取模 %= $a=90;
$a-=90;//$a=$a-90;echo $a;
比較運(yùn)算符
案例: $a=2;$b=2.0
//只有值相等就為true if($a= =$b){
echo ?$a==$b?;}
//全等,要求$a 和 $b 值和類型要相等 if($a= = =$b){ }
對!=!= = 說明 //只有值不相等,則為true
if($a!=$b){
echo '$a!=$b';
}
//只要值不相等,或者類型不相等,則為true
if($a!==$b){
echo '$a!==$b';
}
請編寫一個(gè)程序,該程序可以接收兩個(gè)數(shù)(可以是整數(shù),也可是小 數(shù)),并判斷兩個(gè)數(shù)是大于?小于?還是等于? 對應(yīng)的案例:
$b=90;
if($a>$b){
echo '$a>$b';
}
if($a<$b)
{
echo '$a<$b';
}
if($a==$b){
echo '$a==$b';
} ?> 邏輯運(yùn)算符
要求大家掌握的知識(shí)點(diǎn)有: 搞清每個(gè)邏輯運(yùn)算的規(guī)則 案例 $a=10;$b=7;
if($a++>8 || $b++>7){
echo 'ok!';
}
echo 'a='.$a.'b='.$b;//把結(jié)果填寫 $a=10;$b=7;
if($a++>10 && $b++>7){
echo 'ok!';
}
echo 'a='.$a.'b='.$b;$a=10;$b=7;
if($a++>18 && $b++>7){
echo 'ok!';
}
echo 'a='.$a.'b='.$b;
? 面試題: and && 都表示邏輯與,他們的區(qū)別在什么地方 主要體現(xiàn)在優(yōu)先級(jí)上面 and 的優(yōu)先級(jí) and< = <&& or < = < || 配合案例: $e = false || true;$f = false or true;var_dump($e, $f);$e 是 true $f 是 false;.....40講 三元運(yùn)算符 類型運(yùn)算符 運(yùn)算符優(yōu)先級(jí)
php基本語法-三元運(yùn)算符 基本語法
表達(dá)式1 ? 表達(dá)式2 : 表達(dá)式3 規(guī)則:
更新時(shí)間:2012年11月11日18時(shí)53分 來源: 如果表達(dá)式1 的運(yùn)算結(jié)果是 true, 則取 表達(dá)式2 的值,否則,取表達(dá)式3的值.舉例 :
$a=90;
$b=180;
$c=$a>$b?(12-10):“hello,world”;
echo 'c=='.$c;?>
php 的字符串運(yùn)算符 案例:
$a=“hello,world”;
$b=123;
$c=$b.$a;//$a 具體表示內(nèi)容和 $b 表示內(nèi)容拼接
echo $c;
從上面案例我們看出,當(dāng)兩個(gè)變量(基本數(shù)據(jù)類型)用.連接的時(shí)候,就表示把他們的內(nèi)容拼接
類型運(yùn)算符(了解)
基本語法是: instanceof 用于確定一個(gè) PHP 變量是否屬于某一類 class 的實(shí)例,通常在面向?qū)ο箝_發(fā)中可能用的.class Dog{}
class Cat{}
//創(chuàng)建一個(gè)對象
$cat1=new Cat;
//var_dump($cat1 instanceof Dog);
//在實(shí)際開發(fā)中,我們可能需要去判斷某個(gè)變量是否是某個(gè)類型
if($cat1 instanceof Cat){
echo '$cat1 是一只貓';
}
運(yùn)算符優(yōu)先級(jí)的說明: //****運(yùn)算優(yōu)先級(jí)*****
? 如果將來你們有一個(gè)表達(dá)式很復(fù)雜,建議使用()來指定其運(yùn)算優(yōu)先級(jí)
$a=3;
$b=++$a*3;
echo $b;
41講 順序控制 分支控制(if ifelse switch)程序流程圖
更新時(shí)間:2012年11月16日10時(shí)30分 來源:
php程序的三大流程控制 ①
順序控制(從上到下,從左到右)$a=7;
echo “a=”.a;
echo “hello!”;
$a++;
echo “a=”.a;
echo “O(∩_∩)O”;
$a++;
echo “a=”+a;
所謂順序控制流程,就是不加控制的流程,默認(rèn)情況,會(huì)按照,順序來執(zhí)行你編寫的代碼 ②
分支控制
一個(gè)簡單的定義: 有選擇的來執(zhí)行我們的代碼.分為 1.單分支 2.雙分支 3 多分支 1.單分支的基本語法結(jié)構(gòu) if(條件表達(dá)式){
語句;
//...//....}
這里我們,這里的條件表達(dá)式不管多復(fù)雜,最總運(yùn)算的結(jié)果就是 true 或者 false;快速入門:
編寫一個(gè)程序,可以輸入人的年齡,如果該同志 的年齡大于18歲,則輸出 “你年齡大于18,要對 自己的行為負(fù)責(zé)!” $age=7;
if($age>18){
echo '你的年齡大于18';
} 2.雙分支 基本語法結(jié)構(gòu) if(條件表達(dá)式){
//n多語句;}else{
//n多語句;}
編寫一個(gè)程序,可以輸入人的年齡,如果該同志 的年齡大于18歲,則輸出 “你年齡大于18,要對
自己的行為負(fù)責(zé)!”。否則 ,輸出”你的年齡不大
這次放過你了.” 代碼: $age=4;
if($age>18){
echo '你的年齡大于18';
}else{
echo '你的年齡小于18';
}
echo '
程序結(jié)束!';
3.多重分支 基本語法結(jié)構(gòu)是 if(條件表達(dá)式){ //n多語句
}else if(條件表達(dá)式){ //n 多語句 }else if(條件表示式){ //.}//這里可能還有更多的else if else{ }
? 對上面的結(jié)構(gòu)請注意:
(1)else if 可以有一個(gè),也可以有多個(gè)(2)else 可以沒有 快速入門案例:
編寫一個(gè)程序,可以輸入人的年齡,如果該同志 的年齡大于18歲,則輸出 “你年齡大于18,要對
自己的行為負(fù)責(zé),送入監(jiān)獄”。如果該同志的年
齡大于10歲并且小于等于18,則輸出 “你的年齡
也不小了,把你送少管所.”。其它情況,則輸出
“小孩子,下次注意”。代碼如下: $age=34;【1】 if($age>18【2】){
echo '你要被送入監(jiān)獄';【3】 }else if($age>10 【4】 && $age<=18【5】){ echo '送入少管所';【6】 }else{
echo '下次注意';【7】 }
echo “over”;【8】 流程分析圖:
switch分支語句 基本語法結(jié)構(gòu) switch(表達(dá)式){ case 常量1: //n多語句;break;case 常量2: //n多語句 break;defual:
//n多語句;
break;} ? 請注意:
1.case 語句有一到多
2.defaul 語句可以沒有(根據(jù)自己代碼的業(yè)務(wù)邏輯)3.通常,在case 語句后,要帶break ,表示退出switch語句 4.常量的類型(int, float, 字符串, 布爾型)快速入門案例: 請編寫一個(gè)程序,該程序 可以接收一個(gè)字符,比如 : a,b,c,d,e,f,g
a表示星期一,b表示星期 二 … 根據(jù)用戶的輸入顯 示相依的信息.要求使用 switch 語句完成 $myChar=“b”;
switch($myChar){
case “a”:
echo '今天星期一,猴子穿新衣';
break;
case “b”:
echo '今天星期二,猴子當(dāng)小二';
break;
case “c”:
echo '今天星期三,猴子爬雪山';
break;
default:
echo '沒有匹配的日期';
}
echo 'okokook';一個(gè)案例: $i=“11“;
switch($i){
case 10:
echo '10';
case 1.3:
echo '11';
break;
default:
echo 'hello';
//break;
case 11:
echo '12';
break;
}
該案例得出一個(gè)結(jié)論: //最終的結(jié)論是:
首先按照case順序進(jìn)行配置,如果一個(gè)都沒有匹配到,則執(zhí)行
default語句的內(nèi)容,直到遇到break,則退出switch Default語句放置的位置對執(zhí)行的結(jié)果沒有影響 如果$a=”1”,則會(huì)自動(dòng)轉(zhuǎn)化為整型1
42講 循環(huán)控制①(for)
更新時(shí)間:2012年11月19日15時(shí)24分 來源: 學(xué)生的問題: 老師,說一下if語句和switch的區(qū)別,及應(yīng)用場景。
回答: 從我們學(xué)習(xí)if 和 switch 分支看,if 對某個(gè)范圍的判斷,而switch是對一個(gè)點(diǎn)的判斷, 所以我們可以這樣去選擇他們: 應(yīng)用場景: 當(dāng)我們 的分支就是幾個(gè)點(diǎn)的時(shí)候(比如判斷坦克的方向),就應(yīng)當(dāng)使用swtich ,如果你的分支是幾個(gè)區(qū)域(范圍)的判斷,則考慮使用if ①
循環(huán)控制流程 首先說 for 循環(huán)控制 基本語法結(jié)構(gòu)
for(循環(huán)初值;循環(huán)的條件;步長){
//n多語句;}
為什么需要循環(huán)控制 ?
問題 : 請輸出9000000句,”你好,北京” 這樣一問題: 怎樣讓我們的某段代碼,循環(huán)的執(zhí)行 分析圖
for($i=0;$i<2;$i++){
echo '
你好,北京';
}
echo “over”;
內(nèi)存圖:
43講 循環(huán)控制②(while dowhile)打印金字塔案例
更新時(shí)間:2012年11月20日11時(shí)54分 來源: while循環(huán) 基本語法結(jié)構(gòu)是 while(循環(huán)條件){
//循環(huán)體 ,語句 }
案例: 使用while來打印 10句”你好北京 ” 代碼:
//*****while循環(huán)*****
$i=0;//$i循環(huán)控制變量
while($i<10){
echo '
你好北京'.$i;
//這里我們對循環(huán)控制變量,自增.$i++;
} 流程分析圖:
do..while循環(huán)控制 基本語法結(jié)構(gòu) do{
//循環(huán)體 }while(循環(huán)條件);
快速入門: 循環(huán)的顯示 10句,”你好北京”;$i=0;【1】//循環(huán)控制變量 do{
echo '
dowhile你好北京'.$i;【2】 //對循環(huán)控制變量修改
$i++;【3】//這里有程序員自己控制步長.}while($i<10【4】);執(zhí)行的流程圖:
綜合案例: 要求:
請使用循環(huán)控制語句,輸出一個(gè)空心的菱形->兩個(gè)思想
1.死去活來 2.先易后難 3.建立自己的函數(shù)庫和工具庫(積累)
*
* *
* *
* *
*
但是這個(gè)菱形的層數(shù)可以靈活的變化.比較困難-------》簡單化
<-------->
案例如下:
//打印出金字塔的一半
//死去活來
//外層的for循環(huán)控制層數(shù)
for($i=1;$i<=3;$i++){
//內(nèi)層控制每層*的個(gè)數(shù)
for($j=1;$j<=$i;$j++){
echo '*';
}
echo '
';
}
//打印出整個(gè)金字塔
//如果打印3層
// * *-> 1 2個(gè)空格 1個(gè)*(1-1)*2+1=// ** ***-> 2 1個(gè)空格 3個(gè)*(2-1)*2+1=// *** *****-> 3 0個(gè)空格 5個(gè)*(3-1)*2+1=
5$n=20;
for($i=1;$i<=$n;$i++){
//在打印*前,先打印空格
for($k=1;$k<=$n-$i;$k++){
echo “ ”;
}
//內(nèi)層控制每層*的個(gè)數(shù)
for($j=1;$j<=($i-1)*2+1;$j++){
echo '*';
}
echo '
';
}
請大家打印出一個(gè)空心金字塔
*
* *
**** 思路:
我們可以這樣考慮,在給每行輸出* 號(hào)的時(shí)候,要有判斷,(該給*號(hào)給*號(hào),該給空格給空格)
思路肯定分析:
和一個(gè)空心的菱形
45講 break語句 continue語句 常量
更新時(shí)間:2012年11月23日15時(shí)22分 來源:
循環(huán)相關(guān)的語句-break
基本的概念: 表示結(jié)束當(dāng)前的 for、while、do..while、switch, 流程, 可以給一個(gè)數(shù)字,表示退出到第幾層.快速入門案例:
for($i=0;$i<13;$i++){ echo '$i='.$i.“
”;if($i==10){
break;} }
快速入門的案例2: $i=0;while(++$i){ switch($i){ case 5:
echo “quit at 5
”;break;case 10:
echo “quit at 10
”;break 2;default: break;}
}echo '$i='.$i;結(jié)果是: quit at 5 quit at 10 $i=10 分析圖:
從上面的案例,我們得到幾個(gè)結(jié)論: 1.break語句 默認(rèn)跳出 1層
2.break語句 后面帶的數(shù)字,不能超過實(shí)際可以跳出的循環(huán)層數(shù),否則,會(huì)報(bào)fatal error 循環(huán)相關(guān)語句-continue
基本概念: continue 用于結(jié)束本次循環(huán)剩余代碼,從新開始新的一次循環(huán)(如果條件為真,就繼續(xù)執(zhí)行), continue 后面也可以帶數(shù)字,表示從第幾次循環(huán)重新開始 快速入門:
for($i=0;$i<13;$i++){ if($i==10){ continue;}
echo '$i='.$i.“
”;} 結(jié)果 $i=0 $i=1 $i=2 $i=4 $i=5 $i=6 $i=7 $i=8 $i=9 $i=10 $i=11 $i=12 hello 流程
goto語句
基本概念: 通過goto語句我們可以將程序跳轉(zhuǎn)到指定的地方去執(zhí)行.goto 標(biāo)簽;標(biāo)簽: 語句;快速入門案例: goto a;echo 'aa';a: echo 'bb';快速入門案例2
for($i=0,$j=50;$i<100;$i++){ while($j--){
if($j==17)goto end;} }
echo “i = $i”;end:
echo 'j = 17 '.$i.“||”.$j;結(jié)果: j = 17
php中常量 說明:
所謂常量,我們可以理解成就是特殊的變量: 體現(xiàn)在 1.定義常量前面不需要 $ 2.常量一旦定義,則不能修改其值 3.常量在定義的時(shí)候,就需要它賦初值.4.常量可以通過 define 或者 const
5.常量的名稱,我們一般說是 全部大寫,然后用下劃線間隔
6.什么時(shí)候需要使用常量: 在程序中我們不希望某個(gè)值變化,則考慮使用常量,比如圓周率,稅率....快速入門案例:
//第一種方法
define(“TAX_RATE”,0.08);
echo TAX_RATE;
//第二種方法(php5.3)
const TAX_RATE2=0.1;
echo '-'.TAX_RATE2;?>
46講 函數(shù)基本概念 函數(shù)快速入門
函數(shù)講解
提出一個(gè)問題? 請大家完成這樣一個(gè)需求:
更新時(shí)間:2012年11月25日18時(shí)08分 來源: ①輸入兩個(gè)數(shù),再輸入一個(gè)運(yùn)算符(+,-,*,/),得到結(jié)果.如果我們不考慮使用新的技術(shù),用我們現(xiàn)在的知識(shí)結(jié)構(gòu),完成
//請大家完成這樣一個(gè)需求:
//①輸入兩個(gè)數(shù),再輸入一個(gè)運(yùn)算符(+,-,*,/),得到結(jié)果.$num1=34;
$num2=90;
$oper=“-”;
//$res表示結(jié)果
$res=0;
switch($oper){
case “+”:
$res=$num1+$num2;
break;
case “-”:
$res=$num1-$num2;
break;
case “*”:
$res=$num1*$num2;
break;
case “/”:
$res=$num1/$num2;
break;
default:
echo '運(yùn)算符號(hào)有誤!';
}
echo “計(jì)算結(jié)果是=”.$res;?>