PHP變量
1)不需要提前定義,使用時直接賦一個值即可。
2)PHP的變量的命名規則,跟JS一樣,允許的字符有:大小寫英文字母、0-9、_
3)PHP的變量必須以美元符號$開頭;例如:$name=“周更生”;
4)PHP的變量區分大小寫
5)PHP的關鍵字和函數名,不分區大小寫,建議一律用小寫;
6)PHP對於多個單詞構成的變量名
下劃線方式:$get_user_name
駱峰命名方式:$getUserName
7)同一變量,多次定義,後面的變量會覆蓋前面的同名變量
<?php
$name; //變量定義了,但沒有賦值
var_dump($name); //返回一個NULL
?>
PHP的數據類型
1)基本數據類型(標量數據類型): 整型(int)、浮點數(float)、布爾型(boolean)、字符型(string)
2)複合數據類型:對象(obj)、數組(array)
PHP中的對象,只有自定義對象,沒有所謂的“內置對象”。
面向對象編程,MVC的架構。
3)特殊數據類型:資源型、NULL
資源型:主要訪問或操作“外部”的數據或文件時,將返回一個“資源型”的標識。
如:連接MySQL數據庫時,會返回一個“資源”標識符,說明數據庫已經連通。
只有數據庫連通以後,才能做“後續工作”:選擇數據庫、設置字符集、增、刪、改、查。
NULL:一個變量定義了,但沒有賦值。如果你使用“unset()”刪除了變量的值,則同樣返回NULL
$school = NULL;
unset($name);
PHP常量
常量:就是一個永遠不變的量,就叫“常量”。比如:連接數據庫的“主機名”、“用戶名”、“密碼”、ICP備案號
第一步:定義常量
格式:define(name,value);
舉例:define(“DB_HOST”, “192.168.3.100”);
define(“WEB_ICP”,“京1102342312312”)
define(“WEB_NAME”,“南寧有限公司公司”)
define(“WEB_ADDRESS”,“南寧市青秀區青秀萬達”)
第二步:判斷常量
格式:defined(name)
if(defined(“DB_HOST”))
{
echo “MySQL的主機IP地址:”.DB_HOST;
}
2.for循環語句
1、語法格式:
for(變量初始化;條件判斷表達式;變量更新)
{
循環執行的程序代碼;
}
2、舉例說明
//輸出1-100間,所有的偶數,的和
$sum = 0;
for($i=1;$i<=100;$i++)
{
//找出1-100間所有的偶數
if( $i % 2 == 0 )
{
//這裡出來的數,都是偶數
$sum += $i;
}
}
3.賦值傳值和引用傳址
1、賦值傳值
所謂的“賦值傳值”,就是將一個變量的值,“拷貝”一份傳給另一個變量。
那麼,這兩個變量沒有任何聯繫,是相互獨立的。
在PHP中,默認的傳值方式就是“賦值傳值”,比如:基本數據類型、數組、NULL
$a = 100;
$b = $a; // 將變量$a的值,傳給了變量$b
$b = 200; // 對變量$b重新賦值
echo $a; //$a = 100 ,變量$a的值並沒有改變
2、引用傳址
所謂的“引用傳址”,就是將一個變量的“地址”,“拷貝”一份傳給另一個變量。
因此,這兩個變量指向的是同一個“地址”,或者是同一個“地方”,相當於一個人有兩個名字:大名、小名。
“引用傳址”中兩個變量,只要有一個變量的值修改了,則另一個變量的值也跟著變。
這兩個變量是有聯繫的,不是獨立的。
在PHP中,引用傳址的數據類型是:資源、對象。
注意:在PHP中,任何數據類型都可以“引用傳址”。通過一個“&”來“引用”變量。
//引用傳址
$a = 100; //定義變量,並賦值
$b = &$a; // 用&號將變量$a的“地址”,複製一份,傳給了變量$a
$b = 200; //對$b重新賦值
echo $a; // $a = 200,$a和$b指向了“同一個地方、地址”
4.數組的概念
數組是一組數的集合。
假設:一個老太太,養了50000只雞,雞一重量分別是:1.5斤、2斤、2.5斤、3.0斤、50斤,……,求所有雞的平均重量?
$hen1 = 1.5;
$hen2 = 2;
$hen3 = 2.5;
$hen4 = 3;
$hen5 = 50;
$sum = $hen1+$hen2+$hen3+$hen4+$hen5;
$avg = $sum/5;
//用數組來實現
$arr = array(1.5,2,3,4,5,3.5,6,56,54,34,34,32);
$sum = array_sum($arr);
$count = count($arr);
$avg = $sum/$count
2、數組分類
1)枚舉數組(數字索引數組):下標是非負整數。$arr[0]=100
2)關聯數組(字符下標):下標是字符串。$arr[“name”]=“張立峰”
3)混合數組:即有字符下標,也有數字下標。$arr[“contact”][0] = “13011057863”
4)多維數組:數組的元素,還是一個數組。
3、數組的創建
1)使用[ ]符號來創建數組
$arr[0] = 0; //JS中創建數組 var arr = [1,2,3,4];
//如果[]中沒有指定下標,則創建一個最大數值下標+1的元素
$arr[] = 1; //JS中的下標必須有值,不能為空
$arr[10]= 10;
$arr[] = 11; //下標為11
$arr[“name”]=“張三”;
$arr[] = 100; //下標為12
//使用print_r()直接可以打印輸出所有的數組元素
print_r($arr);
<?php
//創建數組
$arr[] = 0;
$arr[] = 1;
$arr[] = 2;
$arr["name"] = "張三";
$arr["sex"] = true;
$arr["age"] = 30;
$arr[99] = 99;
$arr[] = "北京大學";
//通過print_r()測試數組
dump($arr);
//定義函數
function dump($arr)
{
echo "<pre>";
print_r($arr);
echo "</pre>";
}
?>
2)使用array()函數來創建
格式一:$arr = array(value1,value2,value3,value4,……);
舉例:$arr = array(34,34,65,67,78,”abc”,true,NULL);
格式二:$arr=array(key=>value,key=>value,……);
說明:
Key就是指下標,可以是字符下標,也可以是數字下標;
Value就是數組元素的值,可以是任何類型;
=>叫“重載下標”符號,重新指定一個下標;
舉例:
$arr = array(
“name”=>”張三”,
“sex”=>“男”
“isMarried”=>true,
10=>100, //數字下標從10開始
200,300 //200的下標為11,300的下標為12
);
5.數組的常用函數
print_r()
含義:打印變量的信息,如果是基本數據類型的變量,直接輸出值,如果是數組,則以一定的格式來輸出
格式:bool print_r($var)
返回值:布爾值
unset()
含義:刪除一個數組元素、一個變量、一個對象的屬性。
格式:unset($var)
注意:如果刪除一個數組元素,則數組還在下標依然保留(跟JS一樣delete)
如果使用unset刪除一個數組,則數組中的所有數據消失,並且數組的索引會重建
foreach()
含義:遍歷循環數組,只能應用於數組。
格式:
foreach($arr as [$key=>]$value)
{
echo $value;
echo $arr[$key];
}
注意:$key即可以是數字,也可以是字符。
count()
含義:統計數組元素的個數,默認情況下只統計一維數組。
格式:int count($arr[,mode])
參數:mode為可選,如果設為1,則統計多維數組
array_reverse()反轉數組中的元素
array_shift():刪除數組中的第一個元素,且長度減1
array_pop():刪除數組中的最後一個元素,且長度減1
array_unshift():在數組的開頭增加一個元素,長度加1
array_push():在數組的末尾增加一個元素,長度加1
說明:上述四個對數組操作的函數,返回值是“刪除或增加”的那一個元素的值。
6.
7.函數的概念
函數就是將一段常用的代碼(封裝)進行命名。
假設:我們求以下N個數組中的最大值和最小值
$arr1 = array(1,2,3,4);
$arr2 = array(2,3,2,1);
$arr3 = array(5,6,4,2);
……
8.語法結構
function functionName([參形,參形2,參形3,……])
{
函數功能的代碼;
[return 值];
}
語法結構的說明:
1)function是關鍵字,在PHP中,不區分大小寫;
2)functionName是函數的名稱,命名規則跟變量一樣,但前面不加“$”符號;
3)定義函數時的參數叫“形式參數”,調用函數時的參數叫“實際參數”
4)函數可以沒有參數,但小括號不能省略;
5)函數中,可以使用return語句向調用者,返回一個值;return語句執行後,會立即結束函數的運行,因此return語句一般放在定義函數的最後;
6)函數定義後,必須在某個地方調用;只定義函數,函數是不會執行的,只有調用函數才會執行;
7)函數不能存在同名函數(不支持函數的重載),但在JS中可以;
9.函數參數
(1)值傳遞(複製)
默認參數傳遞,是將一個變量的值,複製一份傳遞給函數了。
showInfo(“周更生”); //調用函數
function showInfo($name)
{
echo “$name 的年齡是30歲”;
}
(2)引用傳遞
引用參數傳遞,是將一個變量的“地址”,傳遞給函數了。可以在函數中,直接修改變量的值。修改完後,不管是函數內,還是在函數外,這個變量都會發生改變。
在定義函數時,在參數前加一個“&”號,就是引用外部的變量地址。
(3)默認參數傳遞
在定義函數時,可以指定默認的參數(給參數賦一個默認的值)。
默認參數,必須放在普通參數的右邊。
function showInfo($who,$sport=“打遊戲”)
{
echo “$who 正在 $sport”;
}
//調用函數
showInfo(“張三”); //$result = 張三正在打遊戲
showInfo(“李四”,”上網”); //$result = 李四正在上網
10.函數變量的作用域:全局變量和局部變量
JS中在函數外定義的變量叫“全局變量”,“全局變量”可以在函數內使用。
JS中的局部變量只能在函數內使用。
在PHP中,在函數外定義的變量,在函數內不能訪問;當然,函數內的變量,在函數外也不能訪問。
在函數中,使用關鍵字global來聲明為“全局變量”,這樣後,在函數內外都能訪問。
$name = "張三";
showInfo();
//輸出$name的值
echo $name;
//定義函數
function showInfo()
{
//聲明為全局變量
global $name;
$name = "張三";
echo "$name 的年齡是30歲!<br>";
}
11.日期時間函數
date()函數
在PHP中,輸出日期時間的相關信息,只需要使用date( )函數。
格式:string date(string format[,int timestamp])
參數:
format:是指輸出的日期和時間的格式字符,比如:date(“Y-m-d H:i:s”)
timestamp:是可選項。如果省略,以當前時間為準(1970年1月1日到現在的秒數),也可以自己定義一個timestamp。
舉例:
echo date("Y年m月d日 H:i:s z l");
time()今天距離Unix紀元(1970年1月1日)
mktime()根據指定的日期時間信息,得到距離Unix紀元過去了多少秒
格式:int mktime([hour][,minutes][,seconds][,month][,day][,year])
說明:
參數的順序,必須是“時分秒月日年”
參數可以從右向左省略,省略的部分用當前時間的對應部分來代替。
返回值:是一個整數,距離Unix紀元過去了多少秒
舉例:mktime(0,0,0,10,20,1980)
//計算:張三今天多大了?
//出生日期:1980-10-20
//(1)先求出今天距離Unix紀元過去了多少秒
$today = time();
//(2)出生日期距離Unix紀元過去了多少秒
$yestoday = mktime(0,0,0,10,20,1980);
//(3)求兩個時間的差
$result = ceil(($today - $yestoday)/(60*60*24*365));
echo "張三今年{$result}歲了!";