c 做網(wǎng)站設(shè)計關(guān)鍵詞優(yōu)化多少錢
一、初步語法
1、PHP代碼標記:以 <?php 開始,以 ?> 結(jié)束;
2、PHP注釋:行注釋://(雙斜杠)或#? ? ? 塊注釋:/* */
3、PHP語句分隔符:
1)在PHP中,代碼以行為單位,系統(tǒng)需要通過判斷行的結(jié)束,通常都用;(英文狀態(tài)下)表示結(jié)束。
說明:PHP中標記結(jié)束符?>有自帶語句結(jié)束符的效果,最后一行PHP代碼可以沒有語句結(jié)束符“;”。
2)PHP中很多代碼的書寫并不是全嵌入到HTML中,而是單獨存在,所以可以不使用標記結(jié)束符?>,PHP會自動從開始到最后全部認為是PHP代碼,從而解析。
二、變量
1、變量是用來存儲數(shù)據(jù)的; 2、變量是存在名字的;
3、變量是通過名字訪問數(shù)據(jù)的; 4、變量的數(shù)據(jù)是可以改變的。
變量的使用
1、定義:在系統(tǒng)中增加對應(yīng)的變量名字(在內(nèi)存中開發(fā)一塊地)
2、賦值:將數(shù)據(jù)賦值給變量(在定義時直接初始化)
3、可通過變量名訪問數(shù)據(jù)
4、變量可從內(nèi)存中刪除
變量命名規(guī)則
1、變量名字必須以"$"開頭;
2、變量名可由數(shù)字、字母、下劃線命名,但必須以字母和下劃線開頭;
3、允許中文變量;(不建議)
// 定義時不需要關(guān)鍵字,但必須使用$符號
$var1;
$var2 = 1;
echo $var2; // 訪問變量,通過變量名找到數(shù)據(jù),并顯示
$var2 = 2; // 修改變量
echo '<hr/>',$var2; // 'hr' 為下劃線,分隔符
unset($var2); // 刪除變量,從內(nèi)存中剔除
echo $var2; // 此時會報錯,因為不存在變量
預定義變量
即提前定義的變量,由系統(tǒng)定義的變量,存儲許多要用到的數(shù)據(jù)(預定義變量都是數(shù)組)。
$_SERVER:
- 包含服務(wù)器和執(zhí)行環(huán)境信息的數(shù)組,例如 HTTP 頭、路徑、腳本位置等。
$_GET:
- 包含通過 URL 參數(shù)傳遞給當前腳本的變量的數(shù)組。
$_POST:
- 包含通過 HTTP POST 方法傳遞給當前腳本的變量的數(shù)組。
$_REQUEST:
- 包含了 $_G?ET、$_POST 和 $_COOKIE 的內(nèi)容的數(shù)組。不建議過度依賴,因為它可能包含未預期的數(shù)據(jù),尤其是在處理表單數(shù)據(jù)時。
$_SESSION:
- 包含當前會話中的會話變量的數(shù)組。需要先調(diào)用?
session_start()
?函數(shù)開啟會話。$_COOKIE:
- 包含通過 HTTP Cookies 傳遞給當前腳本的變量的數(shù)組。
$_FILES:
- 包含上傳文件的信息的數(shù)組。這個變量由文件上傳的表單使用。
$_ENV:
- 包含環(huán)境變量的數(shù)組。
$_GLOBALS:
- 包含了全部變量的全局作用域數(shù)組,變量的名稱就是數(shù)組的鍵。
可變變量
如果一個變量保存的值剛好是另外一個變量的名字,則可直接通過訪問一個變量得到另外一個變量的
值:但需在變量前多加一個$符號
$a = 'b'; // a變量的內(nèi)容正好是b變量的名稱,故稱a為可變變量
$b = 'bb';
echo $$a; // 使用時需加一個$符號
變量傳值
將一個變量賦值給另一個變量:值傳遞、引用傳遞
值傳遞:將變量保存的值復制一份,并將該值給另外一個變量保存(兩個變量無關(guān)系)
// 值傳遞
<?php
// 2.1 執(zhí)行此行,在棧區(qū)開辟一塊內(nèi)存存儲$a,在數(shù)據(jù)段中開辟一塊內(nèi)存保存值1。然后將1所在位置賦值
//給a變量
$a = 1;
// 2.2 棧區(qū)開辟存儲$b;發(fā)現(xiàn)是賦值運算,故會取出$a的值,
// 并在數(shù)據(jù)段重新開辟一塊內(nèi)存并保存,且再把新開辟地址賦值給棧區(qū)的變量b
$b = $a; // 值傳遞
// 2.3 執(zhí)行該行
$b = 2;
echo $a,$b;//a=1,b=2
引用傳遞:將變量保存值所在的內(nèi)存地址傳遞給另外一個變量,兩個變量同指一塊內(nèi)存(名字不一樣而已),可以通過在函數(shù)定義時在參數(shù)前面加上 &
符號來指示參數(shù)是引用傳遞的。
通常情況下,PHP 函數(shù)中的參數(shù)是通過值傳遞的,這意味著函數(shù)內(nèi)部對參數(shù)的修改不會影響到函數(shù)外部的變量。但是,通過引用傳值,函數(shù)可以直接修改調(diào)用者傳遞的變量本身,而不是變量的副本。
function increment(&$value) {$value++;
}$num = 5;
increment($num);
echo $num; // 輸出 6
/* $num 是一個普通的變量,但是當它作為 increment 函數(shù)的參數(shù)時,前面的 & 符號表示這是一個引用傳遞的參數(shù)。因此,函數(shù)內(nèi)部對 $value 的增加操作直接影響到了函數(shù)外部的 $num 變量,使得 $num 的值變?yōu)?6。 */
常量
常量的基本概念
const/constant:是在程序運行中,不可改變的量(數(shù)據(jù));常量一旦定義,通常不可更改。
定義方式
1、使用定義常量的函數(shù):define('常量名',常量值)——類似于c++的 #define
2、const
<?php
// 使用函數(shù)定義常量
define('PI',3.1415); // 注意此處與c++不同,#define 為預處理命令,宏定義,無需加;。
// 使用const關(guān)鍵字定義
const PI = 3;
// 定義特殊常量
define('^-^','smile');
// const ^-^ // 報錯
// 訪問常量
echo PI;
// echo ^-^ // 報錯
constant('^-^'); // 特殊常量的訪問,加引號
// 系統(tǒng)常量
echo '<hr/>',PHP_VERSION,'<br/>',PHP_INI_SIZE,'<br/>',PHP_INI_MAX; // 有符號整形
// 魔術(shù)常量
echo '<hr/>',__DIR__,'<br/>',__FILE__,'<br/>',__LINE__;
echo __LINE__; // 輸出的行數(shù)會變
常量命名規(guī)則:
1、常量不需要使用"$"符號,一旦使用被認為是變量;
2、變量名可由數(shù)字、字母、下劃線命名,但必須以字母和下劃線開頭;
3、常量的名字通常是以大寫字母為主(與變量以示區(qū)別);
4、常量命名的規(guī)則比變量要松散,可以使用一些特殊字符(該方式只能使用define定義);
5、定義常量通常不區(qū)分大小寫,但可以區(qū)分(define函數(shù)的第三個參數(shù));
系統(tǒng)常量
魔術(shù)常量:由雙下劃線+常量名+雙下劃線組成,其值會隨著環(huán)境變化而變化,用戶無法改變。
echo "當前文件路徑:" . __FILE__; // 輸出當前文件的路徑和文件名
echo "當前行號:" . __LINE__; // 輸出當前行號
echo "當前函數(shù)名:" . __FUNCTION__; // 如果在函數(shù)內(nèi)部使用,則輸出當前函數(shù)名
echo "當前類名:" . __CLASS__; // 如果在類內(nèi)部使用,則輸出當前類名
echo "當前命名空間:" . __NAMESPACE__; // 如果在命名空間內(nèi)部使用,則輸出當前命名空間
數(shù)據(jù)類型
數(shù)據(jù)類型:data type,在PHP中指的是數(shù)據(jù)本身的類型,而不是變量的類型。PHP是一種弱類型語言,變量本身沒有數(shù)據(jù)類型。
基本數(shù)據(jù)類型:
整數(shù)(Integer):
- 表示整數(shù)值,例如?
42
?或?-123
.浮點數(shù)(Floating point numbers):
- 表示帶有小數(shù)點的數(shù)值,例如?
3.14
?或?-0.001
.字符串(String):
- 表示文本數(shù)據(jù),可以使用單引號?
'
?或雙引號?"
?包裹,例如?'Hello, World!'
.布爾值(Boolean):
- 表示邏輯值,可以是?
true
?或?false
.空值(Null):
- 表示一個變量沒有值,使用關(guān)鍵字?
null
?表示。復合數(shù)據(jù)類型:
數(shù)組(Array):
- 用于存儲多個值的有序集合,可以是索引數(shù)組(按數(shù)字索引)或關(guān)聯(lián)數(shù)組(按字符串鍵索引)。
對象(Object):
- 表示自定義數(shù)據(jù)結(jié)構(gòu),通過類實例化得到,包含屬性和方法。
特殊數(shù)據(jù)類型:
資源(Resource):
- 表示外部資源(例如數(shù)據(jù)庫連接、文件句柄等),由一些 PHP 函數(shù)返回。
回調(diào)類型(Callable):
- 表示可以被調(diào)用的函數(shù)或方法。
偽類型:
mixed:
- 表示可以是多種不同類型的值。
void:
- 表示沒有返回值的函數(shù)的返回類型。
類型轉(zhuǎn)換:
PHP 是一種弱類型語言,意味著在大多數(shù)情況下,它會自動轉(zhuǎn)換變量的類型以匹配操作的要求。例如,將字符串 "123"
轉(zhuǎn)換為整數(shù) 123
,或者將整數(shù) 456
轉(zhuǎn)換為字符串 "456"
。
類型檢測和轉(zhuǎn)換函數(shù):
PHP 提供了一些函數(shù)來進行類型檢測和類型轉(zhuǎn)換,如 is_int()
、is_string()
、(int)
、(string)
等,用于檢查變量的類型或者強制類型轉(zhuǎn)換。
轉(zhuǎn)換說明:
1、以字母開頭的字符串,永遠為0;
2、以數(shù)字開頭的字符串,取到碰到字符串為止。(不會同時包含兩個小數(shù)點)
$a = 'abcd1.1.1';
$b = '1.1.1abc';
// 自動轉(zhuǎn)換。算術(shù)運算,系統(tǒng)先轉(zhuǎn)化為數(shù)值類型,然后運算
echo $a+$b; // 結(jié)果為1.1(0+1.1)
// 強制轉(zhuǎn)換
echo '<br/>',(float)$a,(float)$b; // 0,1.1
// 類型判斷
echo '<hr/>';
var_dump(is_int($a)); // bool(FALSE)
var_dump(is_string($a)); // bool(TRUE)
// 獲取數(shù)據(jù)類型
echo '<hr/>';
echo gettype($a); // string(雖然前面強制轉(zhuǎn)換了,但并未改變本身)
// 設(shè)置類型
// var_dump 輸出展示展示代碼內(nèi)容,結(jié)構(gòu)與類型。該函數(shù)作可以窺探所有內(nèi)容的類型,以及內(nèi)部信息
var_dump(settype($b,'int')); // 先將字符串轉(zhuǎn)換為int型,轉(zhuǎn)換成功返回true,var_dump判斷
是否為bool型,故顯示 bool(true)
echo gettype($b),$b; // interger 1
var_dump()
是 PHP 中一個非常有用的調(diào)試函數(shù),它能夠輸出一個或多個表達式的詳細信息,包括其類型和值。主要用途包括:
-
輸出變量的類型和值:
var_dump()
?可以輸出變量的數(shù)據(jù)類型(例如整數(shù)、字符串、數(shù)組等)以及其具體的值。
-
輸出數(shù)組和對象的結(jié)構(gòu):
- 對于數(shù)組和對象,
var_dump()
?能夠逐層顯示其結(jié)構(gòu),包括每個元素或?qū)傩缘念愋秃椭怠?/li>
- 對于數(shù)組和對象,
-
輸出 NULL 的信息:
- 對于?
null
?值,var_dump()
?顯示?NULL
。
- 對于?
-
輸出布爾值的信息:
- 對于布爾值?
true
?和?false
,var_dump()
?顯示?bool(true)
?和?bool(false)
。
- 對于布爾值?
gettype()
是 PHP 中的一個函數(shù),用于獲取給定變量的數(shù)據(jù)類型,并返回其類型的字符串表示。
$var1 = 42;
$var2 = "Hello";
$var3 = array(1, 2, 3);
$var4 = null;
$var5 = true;echo gettype($var1); // 輸出:integer
echo gettype($var2); // 輸出:string
echo gettype($var3); // 輸出:array
echo gettype($var4); // 輸出:NULL
echo gettype($var5); // 輸出:boolean
主要特點和注意事項:
- 返回值:
gettype()
?返回一個字符串,表示變量的數(shù)據(jù)類型。 - 適用范圍:適用于所有類型的變量,包括整數(shù)、浮點數(shù)、字符串、數(shù)組、對象、NULL 和布爾值等。
- 區(qū)分對象類型:對于對象,
gettype()
?返回 "object",但無法詳細顯示其類名。如果需要獲取對象的類名,應(yīng)該使用?get_class()
?函數(shù)。 - 獲取資源類型:對于資源(例如數(shù)據(jù)庫連接資源),
gettype()
?返回 "resource"。 - 返回布爾值類型:對于布爾值,
g
ettype()
?返回 "boolean",而不是 "bool"。
$handle = fopen('example.txt', 'r');
echo gettype($handle); // 輸出:resourceclass MyClass {}
$obj = new MyClass();
echo gettype($obj); // 輸出:object// 使用 get_class 獲取對象的類名
echo get_class($obj); // 輸出:MyClass
settype()
是 PHP 中的一個函數(shù),用于將變量轉(zhuǎn)換為指定的數(shù)據(jù)類型。
$var1 = "42";
$var2 = "3.14";
$var3 = "true";
$var4 = "Hello";
$var5 = "null";settype($var1, "integer"); // 將 $var1 轉(zhuǎn)換為整數(shù)
settype($var2, "float"); // 將 $var2 轉(zhuǎn)換為浮點數(shù)
settype($var3, "boolean"); // 將 $var3 轉(zhuǎn)換為布爾值
settype($var4, "string"); // $var4 已經(jīng)是字符串,這里只是示意
settype($var5, "null"); // $var5 是字符串 "null",這里只是示意echo $var1; // 輸出:42
echo $var2; // 輸出:3.14
echo $var3; // 輸出:1 (true 被轉(zhuǎn)換為布爾值 true)
echo $var4; // 輸出:Hello (未改變)
echo $var5; // 輸出:null (未改變)
主要特點和注意事項:
- 返回值:
settype()
?函數(shù)沒有返回值,它會直接修改傳入的變量。 - 適用范圍:適用于標量類型的變量,包括整數(shù)、浮點數(shù)、布爾值和字符串。
- 布爾值轉(zhuǎn)換規(guī)則:字符串 "true" 被轉(zhuǎn)換為布爾值 true,其他非空字符串轉(zhuǎn)換為布爾值 true,空字符串轉(zhuǎn)換為布爾值 false。
- NULL 的處理:
settype()
?不會將變量設(shè)置為 null 類型,因為在 PHP 中 null 是一個特殊的值,而不是數(shù)據(jù)類型。 - 注意點:使用?
settype()
?時,要確保目標類型與變量的當前值兼容,否則可能會導致意外的結(jié)果或錯誤。
$number = "12345";
settype($number, "integer");
echo $number; // 輸出:12345$float_str = "3.14";
settype($float_str, "float");
echo $float_str; // 輸出:3.14$bool_str = "false";
settype($bool_str, "boolean");
echo $bool_str; // 輸出:1 ("false" 被轉(zhuǎn)換為布爾值 true)$str = "Hello";
settype($str, "integer"); // $str 是字符串,不能轉(zhuǎn)換為整數(shù),結(jié)果是 0
echo $str; // 輸出:0