一、語法
- 定界符php代碼需要包含在<?php ?>中
<?php
代碼段
?>
- 註釋方法
<?php
//單行註釋
#單行註釋
/*
多行
註釋
*/
?>
二、 變量
- 定義:$變量名
<?php
$a=10;//定義變量a並賦值爲10
/*-----------變量的說明---------------------------
※php爲弱類型語言,根據所賦值而確定變量的類型;
※變量名由字母、數字和下劃線(_)組成,開頭不能爲數字;
※變量名區分大小寫,如$A和$a爲兩個不同的變量
------------------------------------------------*/
?>
- 字符串變量
字符串變量並置運算符(.)
<?php
$str1="hello";
$str2="world";
echo $str1." "."$str2";//通過並置符將hello、空格、world連接在一起
?>
關於雙引號與單引號
- strpos() f函數查找字符串在另一字符串中第一次出現的位置(區分大小寫)
- substr() 函數返回字符串的一部分
- str_split() 函數把字符串分割到數組中
- explode() 函數使用一個字符串分割另一個字符串,並返回由字符串組成的數組
字符串操作函數手冊
字符串操作函數手冊
- 局部變量與全局變量
函數外定義的變量爲全局變量,全局變量可以在除函數內部以外的任何地方調用,在函數內部調用需要加上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
?>
三、常量
定義:
- 調用define(a,b,c)函數。a:常量名(常量名需要用雙引號括起來);b:常量值;c:是否對常量名大小寫敏感(設置爲true不區分大小寫),此參數可省略,缺省表示區分大小寫
- 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
?>
- 數值數組
數組內容可以爲數字或字符串,id從0開始 - 關聯數組
關聯數組的定義及遍歷
<?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;
}
?>
操作數組的函數手冊
操作數組的函數手冊
八、函數
- 內建函數:菜鳥教程
- 自定義函數:
格式:
<?php
function 函數名(參數列表
- [ ] List item
){
函數體//函數名命名規則同變量
}
?>
函數的兩種調用方法:
九、include、include_once、require、required_once
包含幾次就會執行幾次代碼,當lib.php中定義了函數,則會報錯(函數重定義)此時通過include_once進行解決,不管include_once代碼寫多少次,只包含一次