第一篇:傳智播客PHP教學之PHP基本語法
PHP基本語法
36講 PHP基本語法介紹 PHP數據類型介紹.............................................................................2 37講 整型細節說明........................................................................................................................3 38講 布爾細節 浮點數細節 字符串細節 算術運算符①..........................................................4 39講 算術運算符② 比較運算符 邏輯運算符............................................................................5 40講 三元運算符 類型運算符 運算符優先級............................................................................9 41講 順序控制 分支控制(if ifelse switch)程序流程圖............................................................10 42講 循環控制①(for)..................................................................................................................15 43講 循環控制②(while dowhile)打印金字塔案例..................................................................16 45講 break語句 continue語句 常量.........................................................................................19 46講 函數基本概念 函數快速入門............................................................................................22 47講 函數使用 函數調用初步理解............................................................................................25 48講 函數調用深入理解 函數使用注意事項①........................................................................26 49講 函數使用注意事項② 函數作業布置................................................................................29 50講 函數再回顧 自定義函數....................................................................................................30 51講 位運算①.............................................................................................................................31 52講 位運算②.............................................................................................................................32 53講 數組介紹 數組的創建 數組的遍歷..................................................................................34 54講 數組的引用 數組使用細節①............................................................................................36 55講 數組使用細節② 數組運算符 數組作業評講① 數組小結............................................38 56講 排序介紹 冒泡排序............................................................................................................40 57講 選擇排序 插入排序 快速排序..........................................................................................42 58講 順序查找 二分查找............................................................................................................44 59講 多維數組 數組作業評講②................................................................................................46
36講 PHP基本語法介紹 PHP數據類型介紹
更新時間:2012年11月02日16時44分 來源: 1.1
單行注釋 // #
php的基本語法加強 Parse : 解析 error : 錯誤 syntax : 語法
①
php 可以和 html 混合使用 ②
php 的變量的定義使用
//php中,定義一個變量要以$符號打頭
$a=890;//我定義了一個變量, 該變量名叫 $a , 然后給該變量賦了一個值890 ③
php 的變量的數據類型,是變化的,php變量的數據類型是由運行時的上下文決定 ④
php區分大小寫 $i = 89;$I=90;$abc=90;$Abc=900;
⑤
php 的變量的名稱,應當以字母或者下劃線開頭,不要用數字開頭,也不要用特殊字符開頭.$3abc=89;
php 數據類型有哪些? 有三大類
1.基本數據類型 1.1 整型 1.2 小數型(浮動數)包含單精度和雙精度 1.3 布爾類型(表示真,和 假)1.4 字符串 2.復合數據類型 2.1 數組(array)2.2 對象(object)3.特殊數據類型 3.1 null
3.2 資源類型(resource)
37講 整型細節說明
更新時間:2012年11月04日19時18分 來源: 基本數據類型的入門案例: ■ 整型
整數類型可以表示一個整數,比如:
$ts=1;$ts=-12;■ 布爾類型
布爾型可以表示真或者假,比如:
$ts=true;$ts=false;■ 小數類型
小數類型可以表示一個小數(float,double)
$ts=1.12 $ts=3.1415926 ■ 字符串類型
字符串類型可以表示一個字符串
$ts=“我是一個好人 hello” 基本概念: 何為定義一個變量
$a=90;//相當于我們定義了一個變量 $a,并賦值90 ?>
什么叫給變量賦值
$a=78;
$a=8;//表示用新的值替代 78
$a=”hello”;//表示$a 的類型變化.?>
整型的細節討論
①在php中一個整型數據可以用十進制,也可以用八進制和十六進制 比如 :
$a = 0123;// 八進制數(是以0開頭)$a = 0x1A;// 十六進制數
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的整數都是有符號數.通過該圖,我們可以看出,php的整數的二進制的最高位表示符號 ③ 通過 PHP_INT_SIZE
可以顯示我們自己的機器,一個整數用幾個字節表示 echo PHP_INT_SIZE;
通過PHP_INT_MAX 可以顯示int 最大的數有多少 echo PHP_INT_MAX;
請問? 為什么 PHP_INT_MAX是 2147483647 我們一起推一下
請問? php 的int 型,負數最大表示多少? 負數和正數一樣大 2的31次方減一
④ 如果一個整數的范圍超過了最大范圍,則自動變成float
38講 布爾細節 浮點數細節 字符串細節 算術運算符①
更新時間:2012年11月06日13時53分 來源: 學生的問題?
$a=2;問在內存中 2是怎樣存在的
00000000 00000000 00000000 00000010-> 0*2的0次方+1*2的一次方+..0=0+2=2 $a=-2 問在內存中形式
布爾類型
簡單的說 布爾類型就兩個值 true, 一個false;舉例: //布爾類型 $a=true;$b=false;布爾值 FALSE 自身 整型值 0(零)浮點型值 0.0(零)空 字符串, 以及 字符串“0” 不包括任何元素的數組
不包括任何成員變量的對象(僅PHP 4.0 適用)特殊類型 NULL(包括尚未設定的變量)
$conn=mysql_connect(“localhost”,”root”,”root”);if($conn){
echo ?ok?;}else{
echo ?沒有ok?;}
浮點數的細節
1.浮點數(也叫雙精度數或實數)
2.浮點數的字長和平臺相關,通常最大值是 1.8e308 并具有 14 位十進制數字的精度(這個限制很重要)? 精度要從左邊開始的第一個非0的數字計算.字符串的細節 $a=”hello”;
請問 $a 占用了多個是字節 5個字節 一個字符串類型可以表示多大的串?
①理論上,我們對字符串大小沒有限制,即只有不超過內存就可.②我們定義字符串的時候,可以用單引號,也可以使用雙引號 區別如下: $i=90;
$user1=“hello$i”;
$user2='hello$i';
echo '
user1='.$user1;
echo '
user2='.$user2;
從上面案例我們看出, 當一個變量包含在 “”號中時,會輸出它的值,而包含在?? 中是輸出其字符本身.案例2
如果字符串是包圍在單引號(?)中, 除了來處理 ” 時,會輸出 ” 外,其它規則都一樣
php數據類型的自動轉換
php的表達式
所謂表達式,就是任何有值的東西.$a=90+89;
php的算術運算符 +、-、*、/、%
39講 算術運算符② 比較運算符 邏輯運算符
php的算術運算符
更新時間:2012年11月08日17時42分 來源: +、-、*、/、% $a=90;
$b=7;
if($a%$b==0){
echo '能整除';
}else{
echo '不能整除!';
}
++ 和 – 快速入門: $a=90;
$a++;//等價于 $a=$a+1;
echo $a;
$b=89;
$b--;//等價于$b=$b-1;
echo '
'.$b;
細節 我們的++ 和 – 分為前++ 后 ++ ,--也分為 前--$a=56;$b=$a++;echo $b;echo $a;對上面代碼的分析如下: $a=56;
//$b=$a++;//等價于 $b=$a;$a=$a+1;
$b=++$a;//等價于 $a=$a+1;$b=$a;
echo $b.“||”;//-->$b 57
echo $a;//-->$a 57
左加 += 左減-=
左乘 *= 左除 /= 左取模 %= $a=90;
$a-=90;//$a=$a-90;echo $a;
比較運算符
案例: $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';
}
請編寫一個程序,該程序可以接收兩個數(可以是整數,也可是小 數),并判斷兩個數是大于?小于?還是等于? 對應的案例:
$b=90;
if($a>$b){
echo '$a>$b';
}
if($a<$b)
{
echo '$a<$b';
}
if($a==$b){
echo '$a==$b';
} ?> 邏輯運算符
要求大家掌握的知識點有: 搞清每個邏輯運算的規則 案例 $a=10;$b=7;
if($a++>8 || $b++>7){
echo 'ok!';
}
echo 'a='.$a.'b='.$b;//把結果填寫 $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 && 都表示邏輯與,他們的區別在什么地方 主要體現在優先級上面 and 的優先級 and< = <&& or < = < || 配合案例: $e = false || true;$f = false or true;var_dump($e, $f);$e 是 true $f 是 false;.....40講 三元運算符 類型運算符 運算符優先級
php基本語法-三元運算符 基本語法
表達式1 ? 表達式2 : 表達式3 規則:
更新時間:2012年11月11日18時53分 來源: 如果表達式1 的運算結果是 true, 則取 表達式2 的值,否則,取表達式3的值.舉例 :
$a=90;
$b=180;
$c=$a>$b?(12-10):“hello,world”;
echo 'c=='.$c;?>
php 的字符串運算符 案例:
$a=“hello,world”;
$b=123;
$c=$b.$a;//$a 具體表示內容和 $b 表示內容拼接
echo $c;
從上面案例我們看出,當兩個變量(基本數據類型)用.連接的時候,就表示把他們的內容拼接
類型運算符(了解)
基本語法是: instanceof 用于確定一個 PHP 變量是否屬于某一類 class 的實例,通常在面向對象開發中可能用的.class Dog{}
class Cat{}
//創建一個對象
$cat1=new Cat;
//var_dump($cat1 instanceof Dog);
//在實際開發中,我們可能需要去判斷某個變量是否是某個類型
if($cat1 instanceof Cat){
echo '$cat1 是一只貓';
}
運算符優先級的說明: //****運算優先級*****
? 如果將來你們有一個表達式很復雜,建議使用()來指定其運算優先級
$a=3;
$b=++$a*3;
echo $b;
41講 順序控制 分支控制(if ifelse switch)程序流程圖
更新時間:2012年11月16日10時30分 來源:
php程序的三大流程控制 ①
順序控制(從上到下,從左到右)$a=7;
echo “a=”.a;
echo “hello!”;
$a++;
echo “a=”.a;
echo “O(∩_∩)O”;
$a++;
echo “a=”+a;
所謂順序控制流程,就是不加控制的流程,默認情況,會按照,順序來執行你編寫的代碼 ②
分支控制
一個簡單的定義: 有選擇的來執行我們的代碼.分為 1.單分支 2.雙分支 3 多分支 1.單分支的基本語法結構 if(條件表達式){
語句;
//...//....}
這里我們,這里的條件表達式不管多復雜,最總運算的結果就是 true 或者 false;快速入門:
編寫一個程序,可以輸入人的年齡,如果該同志 的年齡大于18歲,則輸出 “你年齡大于18,要對 自己的行為負責!” $age=7;
if($age>18){
echo '你的年齡大于18';
} 2.雙分支 基本語法結構 if(條件表達式){
//n多語句;}else{
//n多語句;}
編寫一個程序,可以輸入人的年齡,如果該同志 的年齡大于18歲,則輸出 “你年齡大于18,要對
自己的行為負責!”。否則 ,輸出”你的年齡不大
這次放過你了.” 代碼: $age=4;
if($age>18){
echo '你的年齡大于18';
}else{
echo '你的年齡小于18';
}
echo '
程序結束!';
3.多重分支 基本語法結構是 if(條件表達式){ //n多語句
}else if(條件表達式){ //n 多語句 }else if(條件表示式){ //.}//這里可能還有更多的else if else{ }
? 對上面的結構請注意:
(1)else if 可以有一個,也可以有多個(2)else 可以沒有 快速入門案例:
編寫一個程序,可以輸入人的年齡,如果該同志 的年齡大于18歲,則輸出 “你年齡大于18,要對
自己的行為負責,送入監獄”。如果該同志的年
齡大于10歲并且小于等于18,則輸出 “你的年齡
也不小了,把你送少管所.”。其它情況,則輸出
“小孩子,下次注意”。代碼如下: $age=34;【1】 if($age>18【2】){
echo '你要被送入監獄';【3】 }else if($age>10 【4】 && $age<=18【5】){ echo '送入少管所';【6】 }else{
echo '下次注意';【7】 }
echo “over”;【8】 流程分析圖:
switch分支語句 基本語法結構 switch(表達式){ case 常量1: //n多語句;break;case 常量2: //n多語句 break;defual:
//n多語句;
break;} ? 請注意:
1.case 語句有一到多
2.defaul 語句可以沒有(根據自己代碼的業務邏輯)3.通常,在case 語句后,要帶break ,表示退出switch語句 4.常量的類型(int, float, 字符串, 布爾型)快速入門案例: 請編寫一個程序,該程序 可以接收一個字符,比如 : a,b,c,d,e,f,g
a表示星期一,b表示星期 二 … 根據用戶的輸入顯 示相依的信息.要求使用 switch 語句完成 $myChar=“b”;
switch($myChar){
case “a”:
echo '今天星期一,猴子穿新衣';
break;
case “b”:
echo '今天星期二,猴子當小二';
break;
case “c”:
echo '今天星期三,猴子爬雪山';
break;
default:
echo '沒有匹配的日期';
}
echo 'okokook';一個案例: $i=“11“;
switch($i){
case 10:
echo '10';
case 1.3:
echo '11';
break;
default:
echo 'hello';
//break;
case 11:
echo '12';
break;
}
該案例得出一個結論: //最終的結論是:
首先按照case順序進行配置,如果一個都沒有匹配到,則執行
default語句的內容,直到遇到break,則退出switch Default語句放置的位置對執行的結果沒有影響 如果$a=”1”,則會自動轉化為整型1
42講 循環控制①(for)
更新時間:2012年11月19日15時24分 來源: 學生的問題: 老師,說一下if語句和switch的區別,及應用場景。
回答: 從我們學習if 和 switch 分支看,if 對某個范圍的判斷,而switch是對一個點的判斷, 所以我們可以這樣去選擇他們: 應用場景: 當我們 的分支就是幾個點的時候(比如判斷坦克的方向),就應當使用swtich ,如果你的分支是幾個區域(范圍)的判斷,則考慮使用if ①
循環控制流程 首先說 for 循環控制 基本語法結構
for(循環初值;循環的條件;步長){
//n多語句;}
為什么需要循環控制 ?
問題 : 請輸出9000000句,”你好,北京” 這樣一問題: 怎樣讓我們的某段代碼,循環的執行 分析圖
for($i=0;$i<2;$i++){
echo '
你好,北京';
}
echo “over”;
內存圖:
43講 循環控制②(while dowhile)打印金字塔案例
更新時間:2012年11月20日11時54分 來源: while循環 基本語法結構是 while(循環條件){
//循環體 ,語句 }
案例: 使用while來打印 10句”你好北京 ” 代碼:
//*****while循環*****
$i=0;//$i循環控制變量
while($i<10){
echo '
你好北京'.$i;
//這里我們對循環控制變量,自增.$i++;
} 流程分析圖:
do..while循環控制 基本語法結構 do{
//循環體 }while(循環條件);
快速入門: 循環的顯示 10句,”你好北京”;$i=0;【1】//循環控制變量 do{
echo '
dowhile你好北京'.$i;【2】 //對循環控制變量修改
$i++;【3】//這里有程序員自己控制步長.}while($i<10【4】);執行的流程圖:
綜合案例: 要求:
請使用循環控制語句,輸出一個空心的菱形->兩個思想
1.死去活來 2.先易后難 3.建立自己的函數庫和工具庫(積累)
*
* *
* *
* *
*
但是這個菱形的層數可以靈活的變化.比較困難-------》簡單化
<-------->
案例如下:
//打印出金字塔的一半
//死去活來
//外層的for循環控制層數
for($i=1;$i<=3;$i++){
//內層控制每層*的個數
for($j=1;$j<=$i;$j++){
echo '*';
}
echo '
';
}
//打印出整個金字塔
//如果打印3層
// * *-> 1 2個空格 1個*(1-1)*2+1=// ** ***-> 2 1個空格 3個*(2-1)*2+1=// *** *****-> 3 0個空格 5個*(3-1)*2+1=
5$n=20;
for($i=1;$i<=$n;$i++){
//在打印*前,先打印空格
for($k=1;$k<=$n-$i;$k++){
echo “ ”;
}
//內層控制每層*的個數
for($j=1;$j<=($i-1)*2+1;$j++){
echo '*';
}
echo '
';
}
請大家打印出一個空心金字塔
*
* *
**** 思路:
我們可以這樣考慮,在給每行輸出* 號的時候,要有判斷,(該給*號給*號,該給空格給空格)
思路肯定分析:
和一個空心的菱形
45講 break語句 continue語句 常量
更新時間:2012年11月23日15時22分 來源:
循環相關的語句-break
基本的概念: 表示結束當前的 for、while、do..while、switch, 流程, 可以給一個數字,表示退出到第幾層.快速入門案例:
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;結果是: quit at 5 quit at 10 $i=10 分析圖:
從上面的案例,我們得到幾個結論: 1.break語句 默認跳出 1層
2.break語句 后面帶的數字,不能超過實際可以跳出的循環層數,否則,會報fatal error 循環相關語句-continue
基本概念: continue 用于結束本次循環剩余代碼,從新開始新的一次循環(如果條件為真,就繼續執行), continue 后面也可以帶數字,表示從第幾次循環重新開始 快速入門:
for($i=0;$i<13;$i++){ if($i==10){ continue;}
echo '$i='.$i.“
”;} 結果 $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語句我們可以將程序跳轉到指定的地方去執行.goto 標簽;標簽: 語句;快速入門案例: 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;結果: j = 17
php中常量 說明:
所謂常量,我們可以理解成就是特殊的變量: 體現在 1.定義常量前面不需要 $ 2.常量一旦定義,則不能修改其值 3.常量在定義的時候,就需要它賦初值.4.常量可以通過 define 或者 const
5.常量的名稱,我們一般說是 全部大寫,然后用下劃線間隔
6.什么時候需要使用常量: 在程序中我們不希望某個值變化,則考慮使用常量,比如圓周率,稅率....快速入門案例:
//第一種方法
define(“TAX_RATE”,0.08);
echo TAX_RATE;
//第二種方法(php5.3)
const TAX_RATE2=0.1;
echo '-'.TAX_RATE2;?>
46講 函數基本概念 函數快速入門
函數講解
提出一個問題? 請大家完成這樣一個需求:
更新時間:2012年11月25日18時08分 來源: ①輸入兩個數,再輸入一個運算符(+,-,*,/),得到結果.如果我們不考慮使用新的技術,用我們現在的知識結構,完成
//請大家完成這樣一個需求:
//①輸入兩個數,再輸入一個運算符(+,-,*,/),得到結果.$num1=34;
$num2=90;
$oper=“-”;
//$res表示結果
$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 '運算符號有誤!';
}
echo “計算結果是=”.$res;?>