PHP簡(jiǎn)介
PHP是一種超文本預(yù)處理語(yǔ)言,運(yùn)行在服務(wù)器端能和html進(jìn)行嵌套用于制作動(dòng)態(tài)網(wǎng)頁(yè)的語(yǔ)言
特點(diǎn)
- 運(yùn)行在服務(wù)器端的腳本語(yǔ)言
- 能支持絕大部分的操作系統(tǒng)
- 能支持大部分的服務(wù)器apache IIS
- 能支持大部分的數(shù)據(jù)庫(kù)mysql sql server Acces
- 能操作數(shù)據(jù)庫(kù)
- 能操作文件
- 能操作圖片
與html嵌套
在<?php ?>分隔符中的內(nèi)容會(huì)被
mamp
集成開(kāi)發(fā)環(huán)境
靜態(tài)網(wǎng)頁(yè)
沒(méi)有鏈接數(shù)據(jù)庫(kù)的網(wǎng)頁(yè)
動(dòng)態(tài)網(wǎng)頁(yè)
鏈接數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)中獲取數(shù)據(jù)
數(shù)據(jù)庫(kù)
mongoDB 分布式文件存儲(chǔ)的數(shù)據(jù)庫(kù)
數(shù)據(jù)的存儲(chǔ)管理、定義
關(guān)系型數(shù)據(jù)庫(kù)
mysql 關(guān)系型數(shù)據(jù)庫(kù)
在關(guān)系模型的基礎(chǔ)上建立的數(shù)據(jù)庫(kù)
非關(guān)系型數(shù)據(jù)庫(kù)
mongoDB 是一個(gè)基于分布式文件存儲(chǔ)的數(shù)據(jù)庫(kù)。由C++語(yǔ)言編寫(xiě)。旨在為WEB應(yīng)用提供可擴(kuò)展的高性能數(shù)據(jù)存儲(chǔ)解決方案。
web服務(wù)器
提供web功能的設(shè)備
接收請(qǐng)求、處理請(qǐng)求
網(wǎng)絡(luò)分發(fā)、調(diào)制解調(diào)的功能
服務(wù)器返回?cái)?shù)據(jù)在瀏覽器中呈現(xiàn)
PHP
運(yùn)行在服務(wù)器端的腳本語(yǔ)言
服務(wù)器
處理用戶(hù)請(qǐng)求
靜態(tài)資源
.html .css .js .jpg .gif .png
請(qǐng)求靜態(tài)資源直接原樣返回,以字符串的形式返回
動(dòng)態(tài)資源
.php .java
請(qǐng)求動(dòng)態(tài)資源時(shí),先解析PHP的代碼,然后把PHP輸出的結(jié)果,交給服務(wù)器返回,當(dāng)瀏覽器接收到返回的內(nèi)容,開(kāi)始繪制,碰到href,src,url的時(shí)候,會(huì)再次向服務(wù)器發(fā)送請(qǐng)求,最終呈現(xiàn)整個(gè)頁(yè)面
處理過(guò)程
當(dāng)在地址欄鍵入地址的時(shí)候,瀏覽器結(jié)合我們的軟硬件將http請(qǐng)求發(fā)送到網(wǎng)絡(luò)中,服務(wù)器接收到我們的請(qǐng)求,開(kāi)始處理我們的請(qǐng)求,請(qǐng)求的資源分別按照靜態(tài)資源和動(dòng)態(tài)資源的處理方式進(jìn)行處理。
基礎(chǔ)
變量
echo
輸出到頁(yè)面中為字符串
var_dump()
輸出類(lèi)型和值
var_dump(123); //返回 int 123;
常量
define('鍵','值');
值可以用表達(dá)式來(lái)表示
function name(){
return 800;
}
defined("PI",name()); //返回 int 800;
const
值不可以用表達(dá)式
const PI=20*30;
var_dump(PI);
常量的名字需要大寫(xiě),不加$符號(hào),一旦定義后不能更改
常量的值不能在改變或者是被刪除
常量可以在任何位置區(qū)訪問(wèn)
常量的值不能延遲求值,只能是標(biāo)量
可變變量
將一個(gè)變量的值作為另一個(gè)變量的名字
$nub='name';
$$nub='123';
var_dump($nub); //返回“name”
var_dump($name); //返回“123”
var_dump($$nub); //返回“123”
變量引用
&
引用地址
$nub=200;
$nub2=&$nub;
$nub=300;
echo $nub2; //返回300;
判斷
defined();
判斷常量是否被定義
isset();
判斷變量是否被定義
刪除變量
unset();
數(shù)據(jù)類(lèi)型9種
標(biāo)量4種
int
整型integer
float/double
浮點(diǎn)型
string
字符串
. 點(diǎn)
表示連接,可以連接兩個(gè)標(biāo)量
標(biāo)量連接
$nub1=100;
$nub2=200;
var_dump($nub1.$nub2); // .表示連接
“ ”雙引號(hào)
可以解析變量
$nub=200;
$str1="這是一個(gè)數(shù)字$nub";
$str2="這是一個(gè)數(shù)字{$nub}asj293";
boolean
布爾類(lèi)型
復(fù)合類(lèi)型3種
對(duì)象
class person{
}
$obj=new person();
數(shù)組
索引數(shù)組
print_r();輸出數(shù)組的形式
echo "<pre>";
$arr1=array('a',12,'b');
$arr2=array(
0=>'a',
2=>34
);
print_r($arr1);
關(guān)聯(lián)數(shù)組
$arr3=array(
'name'=>'lisi',
'age'=>13
);
二維數(shù)組
$arr4=array(
'name'=>array('a','2'),
'age'=>array(1,2)
);
數(shù)組遍歷
for(只能遍歷索引數(shù)組)
for($i=0;$i<count($arr);$++){
echo $arr[$i];
};
foreach(適用于索引數(shù)組和關(guān)聯(lián)數(shù)組)
foreach($arr1 as $item=>$value){
echo $item.'=>'.$value;
};
callable可調(diào)用
特殊類(lèi)型2種
null
resource
判斷
is_resource();
判斷是否是一個(gè)資源
is_int(); is_integer();
判斷是否是整數(shù)
is_flaot(); is_double();
判斷是否是小數(shù)
is_boolean();
is_string();
is_null();
is_array();
is_object();
獲取
gettype();
獲取數(shù)據(jù)類(lèi)型
強(qiáng)制轉(zhuǎn)換
函數(shù)方式強(qiáng)轉(zhuǎn)
intval();
轉(zhuǎn)化為整數(shù)
strval();
強(qiáng)制轉(zhuǎn)化為字符串
注意:將true轉(zhuǎn)化為1,將false轉(zhuǎn)化為“ ”;
floatval();
強(qiáng)制轉(zhuǎn)化為小數(shù)
doubleval();
boolval();
直接強(qiáng)轉(zhuǎn)
(int)
(flaot)
(double)
(bool)
(boolean)
$nub='123';
$result=(int) $nub;
false的情況
var_dump(boolval($nub));
//0 "" false null "0" 空數(shù)組;
函數(shù)
字符串函數(shù)
strlen();
輸出字符串的長(zhǎng)度
trim();
ltrim();
rtrim();
strtolower();
strtoupper();
strrev();
md5();
將字符串翻譯成16進(jìn)制的字符串
用于加密,而且加密后不可逆
explode();
與js里的split();方法一樣,將字符串轉(zhuǎn)換成數(shù)組
substr();
從指定位置截取到指定長(zhǎng)度(按字節(jié)截取)
mb_substr();
從指定位置截取到指定長(zhǎng)度(按字符截取)
strstr();
從匹配到的第一個(gè)字符開(kāi)始截取的
最后的參數(shù)決定了向前還是向后截取
strpos();
從開(kāi)始查找指定字符首次出現(xiàn)的位置
最后一個(gè)參數(shù)offset表示是從哪個(gè)index位置開(kāi)始查起,如果找不到返回false
strrpos();
從最后開(kāi)始查找指定字符首次出現(xiàn)的位置
str_replace();
替換(區(qū)分大小寫(xiě))
參數(shù)search,
str_ireplace();
替換(不區(qū)分大小寫(xiě))
數(shù)組函數(shù)
in_array();
判斷某個(gè)值在不在數(shù)組里,可以啟用全等
$arr=array(11,22,33);
$brr=array(
'name'=>'lisi',
'age'=>18
);
var_dump(in_array(11,$arr)); //bool(true)
var_dump(in_array('18',$brr)); //bool(true)
var_dump(in_array(18,$brr)); //bool(true)
var_dump(in_array('name',$brr)); //bool(false)
array_search();
在數(shù)組中搜索給定的值,如果成功則返回響應(yīng)的鍵名,若找不到返回false
$arr=array(11,22,33);
$brr=array(
'name'=>'lisi',
'age'=>18
);
var_dump(array_search(18,$brr,true)); //string(3) "age"
array_key_exists();
判斷某個(gè)值是不是數(shù)組中的鍵,如果有返回true,沒(méi)有就返回false;
$arr=array(11,22,33);
$brr=array(
'name'=>'lisi',
'age'=>18
);
//array_key_exists();
var_dump(array_key_exists('lisi',$brr)); //bool(false)
var_dump(array_key_exists('name',$brr));
//bool(false)
array_filter();
用回調(diào)函數(shù)過(guò)濾數(shù)組中的元素
$arr=array(11,22,33);
$brr=array(
'name'=>'lisi',
'age'=>18
);
echo "<pre>";
var_dump(array_filter($brr,function($value){
return $value;
}));
//array(2) {
["name"]=>
string(4) "lisi"
["age"]=>
int(18)
}
array_walk();
類(lèi)似foreach,將每個(gè)值都執(zhí)行一個(gè)函數(shù)
array_map();
將用戶(hù)自定義函數(shù)作用到給定數(shù)組的每個(gè)值上,返回新的值
array_push();
將數(shù)組的后面推入一個(gè)或多個(gè)新元素,會(huì)影響到原數(shù)組(入棧)
array_pop();
刪除數(shù)組中的最后一個(gè)元素(出棧)
array_shift();
刪除數(shù)組中的指定元素去掉并用其他值取代
array_unshift();
在數(shù)組前面插入一個(gè)或者多個(gè)元素
array_keys();
返回的是由鍵組成的數(shù)組,如果有第二個(gè)參數(shù),那么返回魚(yú)第二個(gè)參數(shù)匹配的鍵
array_values();
返回?cái)?shù)組中所有的值
array_sum();
返回?cái)?shù)組中所有值的和
array_merge();
將一或者多個(gè)數(shù)組的單元合并起來(lái),一個(gè)數(shù)組中的值附加在前一個(gè)數(shù)組的后面
$array1 = array(
"color" => "red",
2,
4
);
$array2 = array(
"a",
"b",
"color" => "green",
"shape" => "trapezoid",
4
);
$result = array_merge($array1, $array2);
print_r($result);
//輸出以下結(jié)果
// Array
// (
// [color] => green
// [0] => 2
// [1] => 4
// [2] => a
// [3] => b
// [shape] => trapezoid
// [4] => 4
// )
array_merge_recursive();
合并多多數(shù)組,如果有相同的鍵值,那么后者就會(huì)覆蓋前者
$ar1=array(
'color'=>array(
'favorite'=>'red'
),
5
);
$ar2=array(
10,
'color'=>array(
'favorite'=>'green',
'blue'
)
);
echo "<pre>";
$result = array_merge_recursive($ar1, $ar2);
print_r($result);
// 以上結(jié)果會(huì)輸出
// Array
// (
// [color] => Array
// (
// [favorite] => Array
// (
// [0] => red
// [1] => green
// )
//
// [0] => blue
// )
//
// [0] => 5
// [1] => 10
// )
array_unique();
去重復(fù)
array_rand();
隨機(jī)取數(shù)組里面的值,如果取多個(gè)那么返回的是鍵組成的數(shù)組
sort();
按照值進(jìn)行升序排序,重新排鍵
rsort();
按照值進(jìn)行降序排序,重新排鍵
asort();
按照升序進(jìn)行排序,保持原來(lái)的鍵
arsort();
按照升序進(jìn)行排序,保持原來(lái)的鍵
ksort();
按照鍵進(jìn)行升序排序
krsort();
按照鍵進(jìn)行降序排序
數(shù)學(xué)函數(shù)
abs();
ceil();
floor();
max();
min();
round();
mt_round();
生成隨機(jī)整數(shù)
pow();
PHP函數(shù)
如果定義了形式參數(shù),必須傳遞一個(gè)實(shí)際參數(shù)
判斷方法
function_exists();
判斷一個(gè)函數(shù)是否存在
可變函數(shù)
function fun(){
echo 123;
}
$name='fun';
$name();
作用域
全局變量
全局變量只能在全局里面使用,不能在局部用
從外面?zhèn)髦?/h4>
$nub=200;
function fun(&$aa){
$aa=300;
echo $aa;
}
fun($nub);
echo $nub;
聲明外全局變量
$nub=200;
function fun(){
global $nub
echo $nub;
}
fun();
超全局變量
$nub=200;
function fun(&$aa){
$aa=300;
echo $aa;
}
fun($nub);
echo $nub;
$nub=200;
function fun(){
global $nub
echo $nub;
}
fun();
$GLOBALS
$nub=200;
function fun(){
$GLOBALS['nub']=300;
echo $GLOBALS['nub'];
}
fun();
echo $nub;
$_GET
$_POST
$_REQUSET
$_FILES
$_SERVER
$_SESSION 服務(wù)器端的session
$_COOKIE
局部變量
靜態(tài)變量
static
在函數(shù)第一次運(yùn)行的時(shí)候,會(huì)把靜態(tài)變量保存下來(lái),后面在用的時(shí)候會(huì)用到靜態(tài)變量
function fun(){
static $nub=200;
$nub+=1;
echo $nub;
}
fun(); //200;
fun(); //201;
回調(diào)函數(shù)
傳參的方式回調(diào)
函數(shù)的名字不能直接作為參數(shù)用,需要加引號(hào)
function aa(){
echo 123;
}
function fun($callback){
$callback();
}
fun('aa'); //123;
在實(shí)際參數(shù)里面直接寫(xiě)回調(diào)函數(shù)
function fun($callback){
$callback();
}
fun(function(){
echo 123;
}); //123;
require
在PHP頁(yè)面引入其他文件,實(shí)現(xiàn)代碼復(fù)用
如果找不到要引入的文件,會(huì)erro報(bào)錯(cuò),程序停止
include
在PHP頁(yè)面引入其他文件,實(shí)現(xiàn)代碼復(fù)用
如果找不到要引入的文件,會(huì)warning報(bào)警,程序會(huì)繼續(xù)往下運(yùn)行
時(shí)間
設(shè)置時(shí)間
date_default_timezone_set(timezone indentifier:"Asia/Shanghai");
獲取時(shí)間的區(qū)域
date_default_timezone_set();
time();
距離計(jì)算機(jī)元年的秒數(shù)
microtime();
毫秒數(shù)
date()
var_dump(date(Y-m-d H-));
A:"AM"或者是"PM";
d:幾日,兩位數(shù)字,若不足則補(bǔ)零,從“01”至“31”;
D:星期幾,3個(gè)英文字母,如:“Fri”;
F:月份,英文全名,如:“January”;
h:12小時(shí)制的小事,從“01”至“12”;
H:24小時(shí)制的小事,從“00”至“23”;
g:12小時(shí)制的小事,不補(bǔ)零,從“1”至“12”;
G:24小時(shí)制的小事,不補(bǔ)零,從“0”至“23”;
j:幾日,不足不補(bǔ)零,從“1”至“31”
l:星期幾,英文全名,如“Friday”
m:月份,兩位數(shù)字,從“01”至“12”;
n:月份,兩位數(shù)字,從“01”至“12”;
M:月份,3個(gè)英文字母,如:“Jan”;
s:秒,從“00”至于“59”;
S:
getdate();
mktime();
服務(wù)器存儲(chǔ)
cookie
設(shè)置cookie
setcookie();
setcookie('name','123',time()+40);
刪除cookie
setcookie('name','123',time()-1);
session
開(kāi)啟session
session_start();
設(shè)置session
$_SESSION['name']='123';
刪除session
unset($_SESSION['name']);
驗(yàn)證碼
創(chuàng)建圖片
$img=imagecreatetruecolor(width:120,height:40);
$color1=imagecolorallocate($img,red:,green:,blue:);
$color2=imagecolorallocate($img,red:,green:,blue:);
for($i=0;$i<20;i++){
$color=imagecolorallocate($img,red:md_rand(),green:,blue:);
imagesetpixel(); //畫(huà)圓點(diǎn);
}
imageline($img,);
imagefill($img,x:0,y:0,$color1);
header("content-type:image/png");
imagepng($img);
//imagejpeg();
imagedestroy($img); //釋放資源
//$color=imagecolorallocatealpha();
在html中請(qǐng)求圖片

魔術(shù)常量
var_dump(__DIR__); //
var_dump(__FILE__);
var_dump(basename(__FILE__)); //從一個(gè)路徑中,返回文件名字
var_dump(dirname(__FILE__)); //從一個(gè)路徑中返回路徑
var_dump(file_exists());
is_dir();
is_file();
rmdir(); 刪除空文件夾
unlink(); 刪除路徑