我的php學習第二十一天——php變量,PHP的數據類型

編程語言 PHP 技術 重蔚自留地 2017-05-01

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");

我的php學習第二十一天——php變量,PHP的數據類型

time()今天距離Unix紀元(197011)

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}歲了!";

相關推薦

推薦中...