php

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

超全局變量

$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)求圖片

![](checkcode.php)

魔術(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(); 刪除路徑

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • PHP常用函數(shù)大全 usleep() 函數(shù)延遲代碼執(zhí)行若干微秒。 unpack() 函數(shù)從二進(jìn)制字符串對(duì)數(shù)據(jù)進(jìn)行解...
    上街買(mǎi)菜丶迷倒老太閱讀 1,509評(píng)論 0 20
  • php usleep() 函數(shù)延遲代碼執(zhí)行若干微秒。 unpack() 函數(shù)從二進(jìn)制字符串對(duì)數(shù)據(jù)進(jìn)行解包。 uni...
    思?jí)鬚HP閱讀 2,146評(píng)論 1 24
  • 一、php可以做什么 php是一種可以在服務(wù)器端運(yùn)行的編程語(yǔ)言,可以運(yùn)行在Web服務(wù)器端。 php是一門(mén)后臺(tái)編程語(yǔ)...
    空谷悠閱讀 3,282評(píng)論 4 97
  • PHP 學(xué)習(xí)目錄 ├─PHP視頻教程 1 LAMP網(wǎng)站構(gòu)建 │ ├─PHP教程 1.1.1 新版視頻形式介紹│ ...
    曹淵說(shuō)創(chuàng)業(yè)閱讀 16,288評(píng)論 29 417
  • 數(shù)組的概述 PHP 中的數(shù)組實(shí)際上是一個(gè)有序圖。圖是一種把 values 映射到 keys 的類(lèi)型。此類(lèi)型在很多方...
    dptms閱讀 1,757評(píng)論 0 4

友情鏈接更多精彩內(nèi)容