PHP基礎學習(一)

目錄

前提

基本語法

數據類型

1. 四種標量類型

Boolean 布爾類型

Integer 整型

Float 浮點型

String 字符串

2. 三種複合類型

Array 數組

Object 對象

Callback / Callable 可調用

3. 兩種特殊類型

NULL 無類型

Resource 資源

變量

常量

運算符&表達式

流程控制

函數


前提

PHP運行環境,只是單純的學習可以考慮安裝PHP集成環境軟件,比如PhpStudy,Xampp等軟件,可以一步到位。

 

基本語法

<?php                    //PHP標記
    echo 'Hello,World!'; //輸出"Hello,World!"
?>

 

數據類型

PHP變量中的數據類型不是由程序員設定的,而是由該變量使用的上下文運行時決定的。

echo:輸出一個或多個字符串(只能打印標量類型)

var_dump():打印變量的值和類型

print_r():易於理解的格式打印變量,相較於echo,可以打印更多數據類型

 

1. 四種標量類型

Boolean 布爾類型

<?php

$a_bool = TRUE;
$b_bool = FALSE;

echo $a_bool; //輸出1
echo $b_bool; //輸出空


var_dump($a_bool); //輸出bool(true)
var_dump($b_bool); //輸出bool(false)


print_r($a_bool); //輸出1
print_r($b_bool); //輸出空


 

Integer 整型

<?php

$a_int = 333;

echo $a_int; //輸出333

var_dump($a_int); //輸出int(333)

print_r($a_int); //輸出333

 

Float 浮點型

<?php

$a_float = 333.28;

echo $a_float; //輸出333.28

var_dump($a_float); //輸出float(333.28)

print_r($a_float); //輸出333.28

 

String 字符串

<?php

$a_string = 'Hello';

echo $a_string; //輸出Hello


var_dump($a_string); //輸出string(5)"Hello"


print_r($a_string); //輸出Hello

 

2. 三種複合類型

 

Array 數組

<?php

$a_array = array(1,333,333.28,'Hello');

echo $a_array; //輸出報錯

var_dump($a_array); //輸出array(4) { [0]=> int(1) [1]=> int(333) [2]=> float(333.28) [3]=> string(5) "Hello" }

print_r($a_array); //輸出Array ( [0] => 1 [1] => 333 [2] => 333.28 [3] => Hello )

Object 對象

<?php

class foo{
	
}
$bar = new foo;

var_dump($bar);//輸出object(foo)#1 (0) { }

print_r($bar);//輸出foo Object ( )

Callback / Callable 可調用

暫時空

 

3. 兩種特殊類型

NULL 無類型

NULL與0的區別,NULL代表空,不佔空間。0代表數值爲0,佔內存空間

<?php

$a_null = NULL;

echo $a_null; //不輸出

var_dump($a_null); //輸出NULL

print_r($a_null); //不輸出

Resource 資源

暫時空

 

變量

 

1. 變量名的命名規則

以字母,數字,下劃線構成,首字符不可以是數字。現在支持的更廣泛,甚至漢字也可以當變量名,但是強烈不建議這樣做。

 

2. 變量名,變量值和存儲地址的關係

定義一個變量,內存首先會開闢一塊空間,將變量值存入,存儲空間的地址由變量名所指向。

"$a = 3"

 

3. 可變變量

一個變量的變量名可以動態的設置和使用,一個可變變量獲取了一個普通變量的值作爲這個可變變量的變量名。

<?php

$who = $_GET['who'];

$user1 = "Lisa";
$user2 = "Mark";
$user3 = "Daine";

echo $$who;  //根據GET參數傳的user1/user2/user3輸出用戶名

 

4. 變量類型的檢測(內置函數的使用)

<?php

$a = 12;
$b = 12.5;
$c = false;
$d = NULL;
$e = '12.5';


if(isset($a)){        //isset()判斷變量是否被定義
	echo gettype($a); //返回變量的數據類型  integer
}
if(is_float($b)){
	echo gettype($b);  //double
}
if(is_bool($c)){
	echo gettype($c);  //boolean
}
if(is_null($d)){
	echo gettype($d);  //NULL
}
if(is_string($e)){
	echo gettype($e); //string
}

 

5. 變量銷燬

    unset()函數

<?php

$a = 12;

echo $a; //12

unset($a);

echo $a; //Undefined Variable

6. 變量的賦值方式

<?php

//1. 傳值賦值

$a = 12;
$b = 15;
$a = $b;

echo $a,$b,'<br />'; //1515

//2. 引用賦值

$b = &$a;  //$b指向$a指向的內存空間
$a = 15;
$b = 12;
echo $a,$b,'<br />'; //1212

unset($a);

echo $a,$b,'<br />'; //NOTICE 12

 

常量

 

1. 常量命名方式

要求和變量相同,但習慣上用大寫字母區別於變量

 

2. 常量定義

<?php

define('ZHU_MOUNTAIN',8848);

/*
define('ZHU_MOUNTAIN',8848.8); //ERROR 不能重複定義
ZHU_MOUNTAIN = 8848.8  //ERROR 不能再賦值
*/
FUNCTION EH(){
	echo ZHU_MOUNTAIN;  //全局有效性
}
EH();  //輸出8848

 3.  常量的檢測

<?php

//常量的檢測
if(defined('ZHU_MOUNTAIN')){
	echo '常量HEIGHT已經定義';
}else{
	echo '常量ZHU_MOUNTAIN未定義,我來定義','<br />';
	define('ZHU_MOUNTAIN',8848);
}

if(defined('ZHU_MOUNTAIN')){
	echo '常量ZHU_MOUNTAIN已經定義,值是',ZHU_MOUNTAIN,'<br />';
}

4. 動態常量

<?php

$who = $_GET['who'];

define("USER1","Lisa");
define("USER2","Mark");
define("USER3","Daine");

echo constant($who);  //CONSTANT()函數返回常量值

 

運算符&表達式

 

算術運算符

<?php

$d = 5;
$e = 3;

echo $d + $e,'<br/>';  //8
echo $d - $e,'<br/>';  //2
echo $d * $e,'<br/>';  //15
echo $d / $e,'<br/>';  //1.66667  發生了類型轉換(區別於C/Java等語言)
echo $d % $e,'<br/>';  //2  //取模結果的符號和被除數有關

賦值運算符

<?php

$a = $b = $c = 12;  //從右往左運算,依次賦值

echo $a,'~',$b,'~',$c; 


比較運算符

<?php

// >,>=,<,<=,==,!=,!==,=== 返回值均爲bool型

$a = 2;
$b = "2";

if($a == $b){
	echo 'aaaaaa'; //輸出aaaaaa	  
}
if($a === $b){
	echo 'bbbbbb'; //未輸出			   
}

//"=="只表示值相同,"==="表示值和類型都相同

遞增/遞減運算符

<?php

$a = 1;

echo $a++; //1
echo $a--; //2
echo ++$a; //2
echo --$a; //1

邏輯運算符

<?php

/**************邏輯運算符*************************************
     &&(and),||(or),!,xor(異或運算符,表達式值相同返回0,否則返回1)
***************************************************************/

//三元運算符 條件?返回值1:返回值2

echo 20>=12 &&  6<12 ? 1 : 0;      //1
echo (20<12 and 6<12) ? 1 : 0;     //0  實際只執行了前半段,短路特性

echo 20>=12 || 6>12 ? 1 : 0;       //1    實際只執行了前半段,短路特性
echo (20<=12 or 6>12) ? 1 : 0;     //0

echo  !(6>12) ? 1 : 0;             //1
echo ((20>=12) xor (6<12) )? 1:0;  //0

字符串運算符

<?php

$str1 = "Hello";
$str2 = "World";

$str = $str1 . ' ' . $str2; //字符串拼接
echo $str; //Hello World

位運算符

<?php
//&,|,~,^,<<,>>

$a = 12;
$b = 5;

/*
	0000 1100
	0000 0101
&|^--------------

*/
echo $a & $b; //4(10) =0000 0100(2)
echo $a | $b; //13(10)=0000 1101(2)
echo ~$a;     //-13(10)=1111 0011(2) 涉及補碼運算
echo $a ^ $b; //9(10)=0000 1001(2)
echo $a << 2; //48(10)=0011 0000(2)
echo $b >> 2; //1(10)=0000 0001(2)

 

流程控制

 

順序語句

分支語句

<?php
/******

//條件語句解析:if滿足條件1,執行語句段1,否則查看是否滿足條件2,滿足則執行語句段2,否則執行語句段3
//if-else判斷有且僅有一段語句可以執行

*******/
if(條件1){
    語句段1;
}else if(條件2){
    語句段2;
}else{
    語句段3;
}

//switch--case:適和於不同值,執行不同語句的情況,對if..if else..else的簡化

$day = 9;
switch($day){
	case 1:
		echo '星期一';
		break;
	case 2:
		echo '星期二';
		break;
	case 3:
		echo '星期三';
		break;
	case 4:
		echo '星期四';
		break;
	case 5:
		echo '星期五';
		break;
	case 6:
		echo '星期六';
		break;
	case 7:
		echo '星期七';
		break;
	default:
		echo '你來自火星';
}

循環語句

<?php

/******
while循環:滿足條件1,則執行語句段,執行完後返回while判斷,如果條件滿足,繼續執行,否則跳出循環
******/

while(條件1){
    語句段;
}
/******
do..while循環:相比於while,會先執行一次語句,然後判斷
******/
do{
    語句段
}while(條件1);
/******
for循環:條件1一般是初始化,只執行一次,然後判斷條件2是否滿足,如果滿足,執行語句段,最後執行條件3,一般是循環次數的變化,繼續判斷條件是否滿足來執行語句段,不滿足條件則跳出。
******/

for(條件1;條件2;條件3){
    語句段
}

//break強制跳出循環,continue結束本次循環,繼續下一次循環

 

函數

1. 函數的聲明和調用

<?php

//函數聲明
function foo($a,$b,$c=4){   //$c設置了默認參數(需置到函數參數列表的最後)
    return $a+2*$b+3*$c;    //函數執行結果返回
}

//函數調用
$res = foo(1,2);

echo $res;

/******************/

$str = 'foo';
echo $str(1,2); //可變函數,函數名可用變量值


 

2.  函數的作用域

函數體內部變量屬於局部變量,每次調用函數會申請內存空間,函數結束後再釋放。

函數體內部不可以使用外部變量,除非用global引用全局變量。

3. 函數的引用傳參

<?php

$a = 12;

function foo($num){
	return ++$num;
}

echo foo($a),$a; //1312

function foo2(&$num){
	return ++$num;
}

echo foo2($a),$a;//1313

4. 超級全局變量(可在任何地方引用)

$_GET:URL請求中傳的參數

$_POST:表單提交傳的參數

$_REQUEST:$_GET,$_POST,$_COOKIE的數組

$_FILES:文件上傳用

$_COOKIE:用戶登陸用

$_SESSION:用戶登陸用

$_SERVER:服務器和訪客信息

$_GLOBALS:所有全局變量的一個註冊表

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章