Web安全學習_PHP學習_語法、變量、常量、函數、數組

一、語法

  1. 定界符php代碼需要包含在<?php ?>中
<?php
	代碼段	
?>
  1. 註釋方法
<?php
	//單行註釋
	#單行註釋
	/*
	多行
	註釋
	*/
?>

二、 變量

  1. 定義:$變量名
<?php
	$a=10;//定義變量a並賦值爲10

/*-----------變量的說明---------------------------
※php爲弱類型語言,根據所賦值而確定變量的類型;
※變量名由字母、數字和下劃線(_)組成,開頭不能爲數字;
※變量名區分大小寫,如$A和$a爲兩個不同的變量
------------------------------------------------*/
?>
  1. 字符串變量
    字符串變量並置運算符(.)
<?php
	$str1="hello";
	$str2="world";
	echo $str1." "."$str2";//通過並置符將hello、空格、world連接在一起
?>

關於雙引號與單引號
在這裏插入圖片描述

  • strpos() f函數查找字符串在另一字符串中第一次出現的位置(區分大小寫)
    在這裏插入圖片描述
    在這裏插入圖片描述
  • substr() 函數返回字符串的一部分
    在這裏插入圖片描述
    在這裏插入圖片描述
  • str_split() 函數把字符串分割到數組中
    在這裏插入圖片描述
    在這裏插入圖片描述
  • explode() 函數使用一個字符串分割另一個字符串,並返回由字符串組成的數組List item
    在這裏插入圖片描述
    字符串操作函數手冊
    字符串操作函數手冊
  1. 局部變量與全局變量
    函數定義的變量爲全局變量,全局變量可以在除函數內部以外的任何地方調用,在函數內部調用需要加上global關鍵字
<?php
	$a=10;//定義全局變量$a
	function myTest(){
		$b=20;//定義局部變量$b
		echo $a;
		echo $b;
	}
	myTest();//調用此函數時將會報錯,函數內部無法調用全局變量$a
?>
//-------------若在函數中調用則可採取下列方法---------------
<?php
	$a=10;
	function myTest(){
		global $a;//調用全局變量加關鍵字global
		$b=20;
		echo $a;
		echo $b;
	}
	myTest();//此時全局變量$a和局部變量$b都可以輸出
?>

全局變量存儲在一個數組$GLOBALS[index]中,index爲全局變量的變量名,函數內和函數外均可通過此數組的方法調用全局變量

<?php
	$a=10;
	$b=20;
	function add(){
		$GLOBALS['a']+=$GLOBALS['b'];
	}
	add();
	echo $a;//此時$a=30
?>

static關鍵字定義了靜態變量,函數內定義的局部變量當函數調用結束後會自動刪除,若想保留函數內定義的局部變量的值則需要在函數內定義靜態變量

<?php
	function add1(){
		static $a=10;
		$b=20;
		$a++;
		$b++;
		echo $a;
		echo $b;
	}
	add1();//此時輸出結果$a=11,$b=21
	add1();//$a=12,$b=21
	add1();//$a=13,$b=21
?>

三、常量

定義:

  1. 調用define(a,b,c)函數。a:常量名(常量名需要用雙引號括起來);b:常量值;c:是否對常量名大小寫敏感(設置爲true不區分大小寫),此參數可省略,缺省表示區分大小寫
  2. const 常量名=常量值;

常量爲全局作用域一旦定義則不能在任何地方改變,可以在任何地方使用

<?php
	define("Name","hello PHP",true);//定義不區分大小寫的常量
	function test(){
		echo name;//函數內調用常量
	}
	test(); //輸出"hello PHP"
?>

一些PHP已經定義好的超級全局常量
$GLOBALS
$_SERVER
$_REQUEST
$_POST
$_GET
$_FILES
$_ENV
$_COOKIE
$_SESSION

$_SERVER:包含了頭信息、路徑、以及腳本位置等信息的數組。由web服務器創建。具體可參見菜鳥教程

$_REQUEST:用於接收表單提交的數據

<html>
<head>
	<meta charset="utf-8">
</head>
<body>
	<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
	用戶名:<input type="text" name="username">
	<input type="submit" name="">
	<?php
		$name=$_REQUEST['username'];//定義$name變量來接收用戶名,方框內容爲input標籤的name屬性
		echo $name;//輸出用戶名的內容
	?>
</body>
</html>

四、 輸出的方法

echo和print區別:

  • echo可以輸出多個字符串,print只能輸出一個字符串
  • echo沒有返回值,print有返回值爲1,echo輸出速度快於print
<?php
	echo "hello","world","!";
	print "hello","world";//此行語法錯誤,print只能輸出一個字符串
?>

五、PHP EOF定義字符串

功能:定義一個字符串,開始結束標記一致。

<?php
	$a="hello";
	$str=<<<EOF
	"PHP"	
	"EOF"
	$a
EOF;
//結尾標記須在行首寫,以分號結束。
echo $str;
?>
//開始標記與結束標記可以替換成其他標記
//開始標記有三種,不加引號、加雙引號、加單引號。不加引號和加雙引號作用相同,可以解析字符串中的變量。加單引號不能解析字符串中的變量

六、運算符

運算符

運算符 名稱及描述
x and y 與(x和y全真即真)
x or y 或(x、y一真爲真)
x xor y 異或(x和y相異則爲真)
x&&y 與(x和y全真即真)
x || y 或(x、y一真爲真)
!x
== 等於 (等號左右只要值相同即爲真)
=== 絕對等於 (等號左右值和類型均相同才爲真)
!= 不等於(值不同即爲真,類型不同無關)
!=== 絕對不等於(值或類型有一個不相同即爲真)

and、or與&&、||的區別:
and、or的優先級低於賦值運算符(=),&&、||的優先級大於賦值運算符(=)

<?php
	$a=10;
	$b=10.0;
	$c=20;
	$jud1=$a<0 or $b>0;//由於優先級小於(=)所以$jud1的值爲假
	$jud2=$a<0 || $b>0;//由於優先級大於(=)所以$jud1的值爲真
	$jud3=$a!=$b;//$jud3的值爲假
	$jud4=$a!==$b;//$jud4的值爲真
?>

三元運算符
格式:a?b:c
說明:a、b、c爲表達式,若表達式a爲真則返回表達式b的值,a爲假返回表達式c的值。

PHP5.3後可支持省略表達式b的內容,a?:c,表達式a爲真返回a的值,a爲假返回c的值

<?php
	$a=10;
	$b=0;
	$x=$a>0?:$b;//$x的值爲true
	$y=$a>0?$a:$b;//$y的值爲10
?>

七、數組

數組分爲:數值數組、關聯數組、多維數組

數組的定義:通過array()函數或單獨定義

<?php
//----------整體定義(自動分配id)----------
	$arr1=array("值1","值2");
//----------單獨定義(手動分配id)----------
	$arr2[0]="值1";
	$arr2[1]="值2";
//----------求數組的長度------------------
	$Arr1Num=count($arr1);//求出數組$arr1的長度爲2
?>
  1. 數值數組
    數組內容可以爲數字或字符串,id從0開始
  2. 關聯數組
    關聯數組的定義及遍歷
<?php
//----------第一種定義方法------------
	$People=array("Tony"=>"60","Alice"=>"90","Bob"=>"70");
//----------第二種定義方法------------
	$People2['James']="80";
	$People2['Jorden']="78";
//----------關聯數組的遍歷(foreach循環)------------
	foreach($People as $x=>$x_value){
		echo "$x=".$x."value=".$x_value."<br>";
	}
	//$x爲下標,$x_value爲值,名字可以改變
?>

foreach循環:每循環一次,當前數組的值就會被賦給$value

格式:foreach($arr as $value)
	{
	代碼塊;
	}
<?php
//定義一個數組並輸出
	$arr=array("one","two","three");
	foreach($arr as $value){
		echo $value;
	}
?>

操作數組的函數手冊
操作數組的函數手冊

八、函數

  1. 內建函數:菜鳥教程
  2. 自定義函數:
    格式:
<?php
	function 函數名(參數列表
 - [ ] List item

){
		函數體//函數名命名規則同變量
	}
?>

函數的兩種調用方法:
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

九、include、include_once、require、required_once

在這裏插入圖片描述
在這裏插入圖片描述
包含幾次就會執行幾次代碼,當lib.php中定義了函數,則會報錯(函數重定義)此時通過include_once進行解決,不管include_once代碼寫多少次,只包含一次

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