1、web服務器原理php
瀏覽器:不算開發技術,可是是開發者工具,能幫助咱們到服務器去找腳本並進行解析html
瞭解瀏覽器的差別前端
開發時須要安裝多個瀏覽器測試兼容效果mysql
大體可分爲兩大類: IE 和 其餘程序員
能夠先按照火狐、谷歌等開發,再去修改,兼容IEweb
將前端代碼放服務器上 web是客戶端的服務算法
web服務器(想將靜態網頁發佈出去就須要web服務器)是一款軟件,有apache、Nginx、Tomcat、IIS等
(其實本身也能夠嘗試寫一個web服務器,須要懂http協議等)sql
動態網站就是人機交互,想搜索就能出現頁面,就須要服務器去處理,在服務器上和web服務器裝在一塊兒的就要有在服務器端工做的腳本語言,數據庫
服務器端對服務器的處理,操做系統的結構、服務器的目錄結構、數據庫中的數據結構,文件數據,用戶經過訪問web服務器,web服務器結合服務器的編程語言
什麼都能作到。apache
服務器端編程語言 php,jsp,asp等中的一種
數據庫管理系統 MySQl、Oracle、SQL Server 等中的一種
基於數據庫的網站纔是動態網站 得會一到幾種數據庫管理軟件
瞭解工做中的業務和工做流程以及一些算法。
web工做原理:(BS結構)
服務器上要有操做系統
操做系統中要安裝一個web服務器,web服務器會開一個端口(通常是80端口)
http://www.baidu.com 配置網絡時必定要配置DNS,可將輸入的域名翻譯爲地址
url組成:
一、協議:http 傳輸協議 (不寫的話,瀏覽器會自動添加上)協議有一些缺省的東西,不寫會自動補全
二、主機:ip 或 域名 (如www.baidu.com)
三、端口:80(web服務器默認端口)經過端口區分訪問的是哪一個軟件,普通端口是1024-65535之間的整數
經常使用協議端口是0-1024之間的整數
apache服務器:經過它能夠訪問 文檔根目錄 root ,
四、內容:php/index.php
五、參數:?page=10
經過在瀏覽器輸入url(訪問html的url),向web服務器發送請求,服務器返回相應的html文件給瀏覽器,瀏覽器對文件進行解析渲染
web服務器沒有解析語言的功能,可是瀏覽器只能解析html文件,因此須要在web服務器中擴展語言解析器
如須要解析php,就要裝php解析器。php在服務器端解析,因此是服務器腳本語言,html在瀏覽器即客戶端解析
因此是客戶端腳本語言
服務器端還要安裝數據庫
語言自己沒有大量存儲的功能,因此須要在服務器端安裝數據庫
數據庫:MySQL Oracle SQL server
php能夠做爲訪問數據庫的客戶端鏈接數據庫 數據庫和web服務器不必定要安裝在一臺服務器上
2、幾種主流的web應用程序平臺
開發準備:操做系統 web服務器 數據庫 腳本語言
微軟系列: window IIS SQL server Asp(C#) Asp.net
Linux Apache(發佈網站的) MySQL php 簡稱LAMP(最合適)
Unix tomcat Oracle Jsp JavaEE平臺組合
(性能好,針對特定機器寫的,不會死機,很穩定,不跨平臺不跨機器)
3、LAMP 網站開發組合
能夠嘗試去學習一下Linux操做系統
PHP 的學習
1、php的運行環境
Linux下的安裝三種方式
源碼包安裝
rpm包安裝
集成軟件安裝
xampp
集成軟件安裝 xampp (只建議學習使用,由於apache,mySql版本不能直接單獨選擇)
Windows 安裝的兩種方式
單個下載安裝
集成環境安裝
php版本,5.3.一、、、
集成軟件有 appserv、phpstydy 、wampserver(推薦使用的)
2、安裝php的運行環境
環境結構
啓動、中止、重啓
各個軟件的「家目錄」
各個軟件的配置文件
其餘一些結構
3、php基礎
一、php功能介紹
PHP 超級文本預處理器
-服務器端腳本語言運行 (主要的方向 開發動態網站)
-命令行腳本運行
-客戶端圖形界面(GUI)程序
phpinfo();打印全部php的環境信息以及模塊信息,不光可測試環境是否安裝失敗
Loaded Configuration File 配置文件的位置
PHP在web開發中的應用(既能夠作網站也能夠作應用軟件)
1)php是一種在服務器端執行的嵌入HTML文檔的腳本語言
2)php是目前最流行的網站開發語言(B/S結構)
3)php獨特的語法混合了C、Java、Perl 以及php 自創新的語法
支持幾乎全部流行的數據以及操做系統
php特色:
1)是開方源代碼的,服務器端的腳本語言
2)獨立於操做系統,能夠運行在幾乎全部系統中
3)支持大部分的服務器
4)支持大量數據庫
5)能夠建立圖象
6)還有一些其餘功能在後面的高級技術詳細介紹
php的發展
互聯網相關企業幾乎都在用php語言進行網站開發
4、第一個php程序,PHP語言標記及指令分隔符「分號」
php的開發步驟:
1)使用編輯器建立一個包含源代碼的磁盤文件
2)將文件上傳到web服務器上
3)經過瀏覽器訪問web服務器運行程序
php的基本語法:
四種可讓php解析的標籤
<?php
echo "咱們交個朋友<br>";
?>
<?
echo "不行<br>"; (這種可能會跟xml發生衝突)
?>
<%
echo "hello<br>";
%>
<script language="php">嗨<br></script>
5、PHP程序註釋及空白的使用
指令分割符 分號""
//功能執行語句,後面必須加分號
echo "aaaaaaaaaaaaaa";
//結構定義語句,後面必定不要加分號
if(true){
}
while(){
}
class demo{}
function demo(){
}
PHP須要在每一個指令後用分號結束。和其餘語言不同的是,在php中括號(?>)
前的分號不是必選的
程序註釋*******
//......單行註釋
/*.......*/多行註釋 (注意不能嵌套)
#..... 腳本註釋
/**.....*/文檔註釋 (也不能嵌套)
程序員在編輯時使用註釋是一種良好的習慣,優勢:
寫過不合適的代碼註釋
寫幫助文檔
調試程序
注意:註釋要寫在代碼的上面或是右邊
程序中使用空白的處理
6、php變量在計算機內存中的存儲
一、變量的聲明 (想用數據先放到變量裏面)
變量是用於臨時存儲值的容器。這些值能夠是數字、文本、或者複雜得多的排列組合。是用於跟蹤幾乎全部類型信息的簡單工具
php是一種很是弱的類型語言,php變量的類型不是由程序員設定的,確切的說,是根據該變量使用的上下文在運行時決定的。php不要求在使用
變量以前聲明變量,當第一次給一個變量賦值時,你才建立了這個變量
內存劃分:棧內存 變量名 地址
二、變量的聲明及變量的命名
1)變量名予以 $開始
2)變量的名稱聲明時必定要有意義
3)不合法的變量名:不能以數字開頭,不能有運算符號(關鍵字是能夠做爲php的變量名稱使用)
4)變量名區分大小寫(駝峯式命名方式)
三、工具函數
var_dump(); 打印一個變量的內容和類型
isset($a); 判斷一個變量是否存在,返回的值爲布爾類型的值
unset($a); 清除變量a
empty($b); 判斷b的值是否爲空
四、可變變量
$hello = "world";
$$hello = "name";
$$$hello = "age";
$$$$hello = "sex";
echo $hello;
echo "<br>";
echo $world;
echo "<br>";
echo $name;
echo "<br>";
echo $age;
有時候使用可變變量名是很方便的。就是說,一個可變變量獲取了一個普通變量的值做爲這個可變變量
變量名
五、變量的引用
引用操做符 & 能夠在關聯賦值中使用,就像一個別名,使得變量都指向了內存的相同地址
$a = 10;
$b = 20;
$c = &$a; (就像給變量取了個別名)
$a=100;
echo $a;
echo "<br>";
echo $c;
$c=500;
echo "<br>";
echo $a;
echo "<br>";
echo $c;
1)只有變量纔有地址,只有變量纔能有引用
2)一個變量發生變化,另外一個變量的值也會變化
3)在使用unset()這個函數時,若是有引用關係,只是解除了這種
引用關係,只刪除一個名字,另外一個還在。
4)若是兩個變量是應用關係,一個變,另外一個也變;但若是給其中一個引用
不是普通的值,而是一個新的引用,則改變引用關係。
六、php變量類型的介紹
php是弱類型語言,類型是由值決定的
PHP支持八種原始類型——var_dump()
--四種標量類型:
布爾類型(boolean)
整型(integer)
浮點型(float)(浮點數,也做double)
字符串(String)
--兩種複合類型:
數組(Array)
對象(Object)
--最後是兩種特殊類型:
資源(Resource)
NULL
一個變量賦值爲空,就是清除了這個變量
echo "如下是四種變量類型<br>";
$var = true;
var_dump($var);
echo "<br>";
$var = 10;
var_dump($var);
echo "<br>";
$var = 10.12;
var_dump($var);
echo "<br>";
$var = "hello world";
var_dump($var);
echo "<br>";
echo "如下是兩種複合類型<br>";
$var = array("one","two","three");
var_dump($var); //array
echo "<br>";
echo "<br>";
class Demo{
var $one = 10;
var $two = 20;
var $three = 30;
}
$var = new Demo;
var_dump($var); //object
echo "<br>";
echo "如下輸出兩種特殊的類型<br>";
$var = mysqli_connect("localhost",'root',"");
var_dump($var);
echo "<br>";
$var = null;
var_dump($var);
echo "<br>";
1)php布爾類型(boolean)
boolean爲假值的狀況:boolean的false
int 0
float 0.0 0.00
string ""
string "0"
array 空數組爲假
其餘狀況均爲真值
2)整型和浮點型
整型值能夠用十進制、十六進制、八進制符號指定,前面能夠加上可選的符號(-或者+)表明數值的正負
整數值有最大的使用範圍,這與平臺有關,對於32位系統而言範圍:
負的2的31次方到正的2的31次方,31位存儲位,一位符號位
-2147483648~2147483648,PHP不支持
無符號整數。若是超出了則變成float型。
ord()這個函數能夠輸出ASSI碼值 eg、 echo ord("h");
整數聲明方法: $a = 10; 十進制
$b = 077; 八進制
$c = 0xff; 十六進制
mkdir("/user/hello",0755);
3)浮點數(也叫雙精度數或實數)
是包含小數部分的數,一般用來表示整數沒法表示的數據,如金錢值、距離值、速度值等
浮點數的字長和平臺相關,儘管一般最大值是 1.8e308 並具備14位十進制數字的精度
能夠用如下任何十進制數字的精度,到必定長度會以科學計數法顯示
浮點數是一個近似數,不要用等號去判斷兩個浮點數是否相等
4)字符串的聲明及定義
(1) 一個字符 ,和多個字符都是字符串
(2)字符串的聲明須要用 單引號 或 雙引號引發來
(3)字符串是沒有長度限制的 "" " " "無限長"
(4) 在單引號中可使用雙引號,在雙引號中可使用單引號
(5) 在單引號中不能再使用單引號,在雙引號中不能再使用雙引號
(6) 在單引號和雙引號中可使用轉義字符 \,能夠將沒有意義的字符變得有意義,
也能夠將有意義的字符變得沒意義
5)PHP變量的其餘數據類型
$arr = array(1,2,3,4,5);
$arr2=array(
"foo"=>"bar",12=>true
);
class Person{
var $name;
var $age;
var $sex;
function say(){
}
function eat(){
}
$person = new Person();
}
$file = fopen('text.txt',"r");
echo fread($file);
fclose($file);
6)僞類型
並非php語言中的基本數據類型,只是由於php是弱類型語言,因此在一些函數中一個參數能夠
接收多種類型的數據,還能夠接收別的函數做爲回調函數使用,爲了確保代碼的易讀性介紹一些僞類型的使用
mixed :說明一個參數能夠接受多種不一樣的類型
number:說明一個參數能夠是integer 或者 float
callback:接受一個用戶自定義函數做爲參數
七、 php的數據類型之間的轉換和檢測
getType() 獲取變量類型
1)強制轉換
(1)setType(變量,類型); 將什麼變量設置爲何類型 ----是將原變量給轉換了
(2)在變量使用時,前面加上類型符號 ----- 是在賦值時給新變量一個新類型,原變量類型不變
$int = "100000";
$d = (int)$int;
echo getType($d);
(3)intval(),floatval(),strval() 也是將新變量轉換了,原變量不變
八、 常量的聲明和使用
一旦聲明,這個常量的值不會被改變
初始化靜態段 ----裏面存的數據不靈活
1)常量是使用函數 define()聲明的
define("ROOT",10);
2)若是常量沒有聲明,則常量名在使用時,會自動轉爲字符串(效率很低)
error_reporting(E_ALL& ~E_NOTICE);
$root = "localhost";
echo ROOT;
輸出字符串「ROOT」
3)常量名稱不要加 $符號
4)常量名稱默認區分大小寫 習慣上常量的名稱要所有大寫
5)可使用define()第三個參數決定是否讓這個常量名稱區分大小寫 true false
變量都區分大小寫,常量能夠自定義區分大小寫,其餘php語法都不區分大小寫
6)常量的值只支持標量數據類型
7)常量不能使用 unset()釋放
8) 可使用defined()判斷 一個常量是否存在
if(defined("ROOT")){
echo ROOT+10;
}else{
echo "1111111";
}
能夠用函數constant()來讀取常量的值
用get_defined_constants()能夠得到全部已定義的常量列表
9)常量有魔術常量和系統常量
魔術常量 值不像PI 同樣,它的值在環境發生變化時會改變,如_LINE_文件中的當前行號
幾個php的魔術常量
_LINE 文件中的當前行號
_FILE 文件的完整路徑和文件名
_DIR 文件所在的目錄
_FUNCTION 函數名稱
_CLASS 類的名稱
_NAMESPACE 當前命名空間的名稱
九、PHP的運算符
運算元 運算符 運算元
1 + 1
一元運算符 +1 -1 ++ -- ==
二元運算符 + - * / % > < = == ===
三元運算符 1?2:3
$a = 10
算術運算符號 + - * / % ++ --
賦值運算符號 = += -= *= /= %=
比較運算符 > < == >= <= ===?= ?==
邏輯運算符 && || !
位運算符號 & | ~ >> <<
其餘運算符號 ?: @ =>
1)算數運算符號
除數不能爲零
在其它語言中(不是在PHP中),+號除了有 加法的做用, 還有鏈接字符串的功能
$a = 10;
$b = 5;
echo $a/$b;
echo "<br>";
echo 1+1+"4+5+6"+1+1; //會將字符串自動轉換爲相應的數據類型,因此會轉爲4
echo "<br>";
echo 1+1+"4e+5+6"+1+1; //會將字符串自動轉換爲相應的數據類型,因此會轉爲4乘以10的5次方
% 餘數的結果,正負號取決於前面的數,跟後面無關
1)讓一個數不超過一個值(計算範圍)
2)求什麼被整除
if($num%4 == 0){}
13.45%2.23456 其實對小數求模沒有意義,php中會割捨爲整數而後求模
++ 自增
$a = 5;
$a++ 先用再加
++$a 先加再用
2) 賦值運算符
= += -= *= /= %= .=(將變量與所賦的值相連後的結果賦給該變量)
「.」 能夠直接連變量或者字符串,可是不能直接連整數等
單引號不解析變量,雙引號能夠解析變量
echo "這個變量的值:".$a."<br>";
echo "<br>";
echo "這個變量的值:$a<br>";
3)比較運算符
(1)比較後的結果是一個 boolean值,用在if和while等語句中
4>3 true
== 比較的是內容
====全等,不只內容要相等,並且兩邊類型要相等
4)邏輯運算符
就是將比較運算符鏈接在一塊兒
&& || !
邏輯運算符的特性:
特性: 短路
$a =1;
&& and $a > 5 && $a < 100 明明兩邊都要執行,前邊若是不成立後面也就不去執行了
|| or
$a = 8;
$a > 5 || $a < 100
boolean 型不參與++運算
賦值運算符優先級最低
$a=0;
$b=0;
if($a = 3 && $b = 3){
$a++;
$b++;
}
echo $a.",".$b; //1,4
$a=0;
$b=0;
if($a = 3 || $b = 3){
$a++;
$b++;
}
echo $a.",".$b; //1,1
5)php中的位運算符
& 按位與 | 按位或 ^ 按位異或 ~ 按位非 << 左移 >> 右移
6)其餘運算符
運算元 ? 運算元 :運算元
條件 ? 語句 :語句
條件 ? 表達式 : 表達式
一 ? 二 : 三
若是"一"的條件成立,則執行 "二",不然執行 "三"
7)php運算符的優先級和表達式
十、 PHP流程控制
順序結構
分支結構
{
一、單一條件分支結構 (if)
二、雙向條件分支結構 (if 加上 else從句)
三、多向條件分支結構 (if else if子句,switch語句)
在多路分支(if else if)中,只能進入一個 ******
switch-case語句語法
一、switch()括號中,必須是一個變量
二、在switch(){}中放的是多個case 語句,case空格,後面放的是值,
值的後面使用一個 冒號:
switch (變量){
case 值1:
語句;
語句;
語句;
語句;
語句;
break;
case 值2:
語句;
語句;
語句;
語句;
語句;
[break;] (可選)
case 值3:
語句;
語句;
語句;
語句;
語句;
break;
default:語句;
break;
}
switch case 須要注意的一些細節:
一、若是在case中語句過多,就須要將多個語句作成一個函數之類
二、switch(變量) 變量的類型 只能容許兩種類型: 整型和字符串
三、break 是退出switch結構使用的,若是須要同時匹配多個值時,可使用多個case而不加break;
else if 判斷範圍時使用
switch case 使用於單個值匹配進行分支
四、巢狀條件分支結構
指的是在語句中能夠再嵌套幾層
}
循環結構
while語句
do...while 循環
for 語句
goto 語句
特殊的流程控制語句
循環必須有退出循環的條件,
while 循環不是作計數用的,適合條件循環
for 循環 計數用
do-while 程序會先執行 do語句體中的語句,而後再檢查表達式的值,若是符合條件表達式,就再
進行 do 語句體中的語句,直到條件不符合爲止
while(條件表達式){
循環體
}
//第一步先執行 表達式, 表達式爲true時, 才執行循環體
do{
循環體
}while(條件表達式);
//第一步 先執行循環體,再判斷條件表達式,成立則執行下一個循環體
循環結構for語句 (適合用計數作循環)
for( 表達式一;表達式二 ; 表達式三 ){
echo "循環體<br>";
}
第一部分,先執行表達式一,
第二部分,再執行表達式二,
第三部分,再執行 循環體,
第四部分,再執行 表達式三
第五部分,再執行表達式二
注意,表達式一,只被執行一次
表達式一:初始化條件 $i = 0;
表達式二:條件表達式,成立則執行循環體
表達式三:是一個自增條件 $i++,
三部分都能提出來,可是for()中的兩個分號不能省略
九九乘法表四種打印方法
for($i=1;$i<=9;$i++){
for($j = 1 ;$j<=$i;$j++){
echo "$j X $i = ".($i*$j)." ";
}
echo "<br>";
}
echo "<br>";
for($i=1;$i<=9;$i++){
for($j = $i ;$j>=1;$j--){
echo "$j X $i = ".($i*$j)." ";
}
echo "<br>";
}
echo "<br>";
for($i=9;$i>=1;$i--){
for($j = 1 ;$j<=$i;$j++){
echo "$j X $i = ".($i*$j)." ";
}
echo "<br>";
}
echo "<br>";
for($i=9;$i>=1;$i--){
for($j = $i ;$j>=1;$j--){
echo "$j X $i = ".($i*$j)." ";
}
echo "<br>";
}
十一、特殊流程控制語句
1)break (break後面加數字能夠退出多層循環)
跳出循環 break是一個指令,break1是退出一層循環,break2 是退出兩層循環 break3是退出三層循環
2)continue
中斷本次循環,繼續下一次循環
3)exit
當前的腳本中只要執行到exit語句,而無論它在哪一個結構中都會直接退出當前腳本。exit是一個函數
,能夠帶參數輸出一條消息,並退出當前腳本。它的別名是die()
while($i < 100){
if($i %3 == 0){
continue;
echo "{$i}aaaaaaaaaaaaaaaaaaaaaaaaa<br>}";
}
$i++;
}
這是一個死循環
十二、流程控制語句goto
跳轉
echo "11111111111<br>";
goto nh; (跳轉到標記處)
echo "2222222222222<br>";
echo "333333333333333<br>";
nh: (標記)
echo "44444444444444444<br>";
循環
$x = false;
$i=0;
xx:
echo "{$i}11111<br>";
if($i >5)
goto nz;
$i++;
goto xx;
goto的得與失
goto 語句常常帶來錯誤或隱患。它可能跳過了某些對象的構造、變量的初始化、重要的計算等語句。
1三、PHP函數
函數:是一段完成指定任務的已命名代碼塊。函數能夠遵守給它的一組值或參數完成特定的任務,而且可能返回
一個值。在PHP中有兩種函數:自定義函數與系統函數。
函數的優越性:
控制程序設計的複雜性
提升軟件的可靠性
提升軟件的開發效率
提升軟件的可維護性
提升程序的重用性
讓表格隔行換色代碼
echo '<table border="1" width="800" align="center">';
echo '<caption><h1>表格</h1></caption>';
for($i = 0;$i<10;$i++){
$bg = ($i%2==0)?'#cccccc':"";
echo '<tr bgcolor="'.$bg.'">';
for($j=0;$j<10;$j++){
echo '<td>'.$i.'</td>';
}
echo "</tr>";
}
echo '</table>';
函數的定義和應用、函數的語法格式
自定義函數的返回值
輸出錯誤
error_reporting(0);
error_reporting(E_All);
file_put_contents("demo.html",table("成績表",50,5,3,'green',10,400,'right')); 新建demo.html文件,將調用的函數生成的html放入
demo.html文件中
函數遇到return ,函數return下面的代碼都不會執行了
return除了能夠終止函數,還能夠返回值
1)函數名定義時必需要有意義,建議駝峯式命名
2)重複的函數名不能聲明 ,不能跟自定義的函數重名,也不能夠和系統函數重名
自定義函數語法格式:
function 函數名稱 (參數1,參數2,參數3){
程序內容敘述(函數體);
return 返回值 //如需函數有返回值時使用
}
函數的使用:
函數名稱([參數1,參數2,參數3。。。。])
瞭解一個函數: 1)瞭解函數功能
2)瞭解參數
3)瞭解返回值
function_exists()判斷函數是否存在
3)PHP局部變量
PHP變量的範圍
function demo(){
$age = 30;
echo "你吃飯了沒<br>";
}
echo demo();
函數調用了才執行
函數內部聲明的變量,只有調用時才執行,調用結束後,函數中聲明的變量會被釋放
函數內部聲明的變量,只能在函數內部調用,這就是——————局部變量
函數的參數,就是一個局部變量,聲明成形參的,能夠在調用時,給值,傳值
4)PHP全局變量
全局變量:在函數外部聲明的變量,能夠在每一個函數中使用。(順序)
在函數中局部變量會覆蓋全局變量的能見度,所以在函數中沒法直接調用使用全局變量
函數中若要使用全局變量時,必需要利用global 關鍵字定義目標變量,以告訴函數主體
此變量爲全局。
在函數內部若是須要使用函數外部的變量,須要使用global關鍵字,將外部變量引入
只要將全局變量聲明在調用以前,在調函數時就能找到
在外面聲明的變量也好常量也好,若是沒有unset()釋放,都是腳本結束的時候釋放。
而函數內部的局部變量,在函數調用結束時就會釋放
九個全局數組:$_POST['a']=100; $_GET['b']=300;
全局數組中的變量,默認都是全局的,不須要用global去引入了
5)PHP靜態變量
內存: 棧內存、初始化靜態段
局部變量、全局變量聲明後在棧內存中
static $c 這樣的變量存在初始化靜態段中
靜態變量:
一、在函數中聲明的靜態變量只在第一次調用時聲明
二、第二次之後,一看是靜態變量,就先到靜態區中,看一下有沒有這個變量,若是有就使用,
而不去再聲明
三、靜態變量,在同一個函數屢次調用中共享
靜態變量通常都是在函數內部聲明
6)
function demo(){
static $a=0;
$a++;
echo $a."<br>";
}
function test(){
static $a=0;
$a++;
}
demo();
demo();
test();
test();
test();
test();
demo();
demo();
輸出結果爲 一、二、三、四、5
7)PHP常規參數的函數
函數三要素: 一、函數的功能描述
二、函數的參數
三、函數的返回值
常規參數的函數格式說明:所謂常規參數的函數,就是實參和形參應該個數相等、類型一致
僞類型參數
number add(number $a ,number $b)
mixed funName(mixed $a)
8)引用參數的函數
引用變量的特色:$a = 10; $b = &$a; $a = 400; $b = 800;
一、只有在內存中的變量纔有地址。
二、有引用關係的兩個變量,一個變,另外一個就變,至關於兩個是一個
若是在函數說明中,有&出現,說明這個參數是一個引用參數,在調用時傳參數時,就必須傳一個變量
注意:若是在函數的形參中使用"&"修飾參數,在調用該函數時必須傳入一個變量給
這個參數,而不是傳遞一個值。
9)PHP默認參數的函數
function demo($name = "shf",$age = "two",$sex = 'three',$email = "four"){
echo "{$name}=={$age}==={$sex}===={$email}";
}
demo("妹子");
默認參數([]中的)的函數格式說明:
在php中,支持函數的默認方式調用。若是在調用函數時沒有指定參數的值,在函數中會
使用參數的默認值。
注意:默認參數必須列在全部沒有默認值參數的後面
10)PHP可變個數參數的函數
func_get_args();//返回一個數組,包含全部參數
func_num_args() //返回參數總數
func_get_arg() //接收一個數字參數,返回指定參數
function demo(){
$arr=func_get_args();
$sum = 0;
for($i=0;$i<count($arr);$i++){
$sum +=$arr[$i];
}
return $sum;
}
echo demo(1,2,3,4,5,6,7,8,9);
下面代碼效果同上
function demo(){
$arr=func_get_args();
$sum = 0;
for($i=0;$i<func_num_args();$i++){
$sum +=func_get_arg($i);
}
return $sum;
}
echo demo(1,2,3,4,5,6,7,8,9);
11)變量函數
若是將一個函數名稱(字符串)給一個變量(字符串),而後在這個變量後面加上括號
,就會調用這個變量值對應的函數
function add($a,$b){
return $a+$b;
}
$var = "add";
echo $var."<br>";
echo $var(10,20);
12)回調函數
在使用一個函數的時候,若是傳一個變量不能解決多大的問題。就須要傳一個過程進入
到函數中,改變函數的執行行爲。
在函數的調用時,在參數中傳的部署一個變量或一個值,而是一個函數。這就是回調函數
參數。
$arr = array("aaa","a","aaaaaa","sdfghjkl","xcvbnm","xc","kjhgfdsa");
function mycom($a,$b){
if(strlen($a)>strlen($b)){
return -1;
}else if(strlen($a)<strlen($b)){
return 1;
}else{
return 0;
}
}
print_r($arr);
usort($arr,"mycom");
echo "<br>";
print_r($arr);
function fun($one="1",$two="2",$three="3"){
echo "$one===========$two==========$three<br>";
}
fun();
參數個數若是是變長的時,就不能直接調用這個函數
要藉助於 call_user_func_array("fun",array(111));
if(count($_GET==1)){}
fun()