當(dāng)前位置:工程項目OA系統(tǒng) > 泛普各地 > 江西OA系統(tǒng) > 南昌OA系統(tǒng) > 南昌網(wǎng)站建設(shè)公司
基礎(chǔ)PHP小知識分享
一、require 和 require_once的區(qū)別
require 和 require_once兩個的引用方法沒有什么區(qū)別;他們的區(qū)別在于使用require每引用一次文件中的代碼就會被執(zhí)行一次,而使用require_once函數(shù)則不然,如果目標(biāo)文件中的代碼已經(jīng)被包含了,則不會再次被包含。
二、require 和 include 的區(qū)別
在使用上兩者沒有本質(zhì)的區(qū)別。兩者的區(qū)別體現(xiàn)在當(dāng)目標(biāo)文件不存在時的處理方法上。
如果引用的文件不存在,include將會產(chǎn)生一個警告;require則會導(dǎo)致一個致命的錯誤。換句話說,如果想在丟失文件時停止處理頁面,可以使用require方法。而include則不會這樣,即便出錯,腳本也會繼續(xù)運行。
如:當(dāng)使用require時
<?php
require "hello1.php";
echo '<br>';
require_once ("hello.php");
?>
顯示的結(jié)果:
Warning: include(hello1.php) [function.include]: failed to open stream: No such file or directory in D:AppServwwwlianxidiaoyong.php on line 2
Warning: include() [function.include]: Failed opening 'hello1.php' for inclusion (include_path='.;C:php5pear') in D:AppServwwwlianxidiaoyong.php on line 2
腳本出現(xiàn)錯誤,require_once 調(diào)用的函數(shù)不會被執(zhí)行。
當(dāng)使用include時:
<?php
include "hello1.php";
echo '<br>';
require_once ("hello.php");
?>
顯示的結(jié)果:
Warning: include(hello1.php) [function.include]: failed to open stream: No such file or directory in D:AppServwwwlianxidiaoyong.php on line 2
Warning: include() [function.include]: Failed opening 'hello1.php' for inclusion (include_path='.;C:php5pear') in D:AppServwwwlianxidiaoyong.php on line 2
hello world
即使腳本出現(xiàn)錯誤,require_once調(diào)用的函數(shù)也會被執(zhí)行。
三、PHP中的常量的值只包括4種類型:
整型(整數(shù))integer
浮點型 float(含小數(shù)點得數(shù))
字符型 string(字符與字符串)
布爾型 boolean (布爾值)
四、數(shù)據(jù)類型分類
數(shù)據(jù)類型分為3大類共8種類型:
1、最基本的4種類型:
boolean (布爾型)
integer (整型)
float (浮點型)
string (字符串型)
2、符合型數(shù)據(jù)
array (數(shù)組)
object (對象)
3、最特殊的數(shù)據(jù)類型
resource (資源)
NULL (無值) 注:使用unset()函數(shù)可以注銷一個變量
五、查看一個函數(shù)的類型我們可以使用
gettype() 函數(shù)
該函數(shù)的語法格式代碼如下
string gettype (mixed var)
六、自定義常量的函數(shù)
define()
該函數(shù)的語法格式代碼如下
bool define(string name, mixed value[,bool case_insensitive])
如,定義一個HOSTNAME的常量
define ("HOSTNAME","localhost");
七、當(dāng)將自定義函數(shù)的的可選項case_insensitive設(shè)置為true時定義的常量將會 忽略大小寫。
八、獲取所有預(yù)定義的PHP常量
get_defined_constants()
該函數(shù)的語法格式代碼如下:
array get_defined_constants([mixed categorize])
可選參數(shù)categorize,該參數(shù)用于指定是否把系統(tǒng)中的常量按照其各自所屬的 分類輸出。
九、魔術(shù)常量
魔術(shù)常量屬于系統(tǒng)常量的一種,與普通的系統(tǒng)常量不同,該類常量在不同的 PHP文件中將會有不同的值。
1、__LINE__, 指代當(dāng)前代碼所在行數(shù)。
2、__FILE__, 指代當(dāng)前文件的路徑名。
3、__FUNCTION__, 指代當(dāng)前被調(diào)用的函數(shù)名。
4、__CLASS__ , 指代類的名稱名。
5、__METHOD__, 指代類的方法名。
十、比較運算符
比較運算符用于對不同的內(nèi)容進(jìn)行大于、小于、等于及不等于類似的比較操 作。
== (等于),該運算符如果前后內(nèi)容相等則返回TRUE,反之則返回FALSE
=== (全等于),該運算符如果前后內(nèi)容相等并且類型一致則返回TRUE,反之則 返回FALSE。
!= (不等), 該運算符如果前后內(nèi)容不相等則返回TRUE,反之則返回FALSE
<> (不等), 該運算符如果前后內(nèi)容不相等則返回TRUE,反之則返回FALSE
!== (非全等),該運算符如果前后內(nèi)容不全等則返回TRUE,反之則返回FALSE
< (小于), 該運算符如果前面的值小于后面的值則返回TRUE,反之則返回 FALSE。
> (大于), 該運算符如果前面的值大于后面的值則返回TRUE,反之則返回 FALSE。
<= (小于等于),該運算符如果前面的值小于等于后面的值則返回TRUE,反 之則返回FALSE。
>= (大于等于),該運算符如果前面的值大于等于后面的值則返回TRUE,反之 則返回FALSE。
十一、邏輯運算符
PHP中得邏輯運算符用于處理邏輯與、邏輯或、邏輯異或及邏輯非等邏輯關(guān) 系并返回相應(yīng)的布爾值。
and (邏輯與),該運算符如果前后的兩個值均為TRUE則返回TRUE,反之返回 FALSE。
or (邏輯或),該運算符如果前后的兩個值中至少有一個為TRUE返回TURE, 反之(如果沒有一個TRUE)FALSE。
xor (邏輯異或),該運算符如果前后兩個值不同(一個為TRUE,另一個為 FALSE)則返回TRUE,反之(兩者相同)則返回FALSE。
! (邏輯非),該運算符號如果其后面的值為FALSE則返回TRUE,反之則返回 FALSE。
&& (邏輯與),同and(優(yōu)先等級不同)。
|| (邏輯或),同or (優(yōu)先等級不同)。
十二、遞增/遞減運算符
PHP中也支持C語言風(fēng)格的前/后遞增與遞減運算符。PHP中得遞增/遞減運算 符包括一下幾種:
++$a (前加),$a的值加1,然后返回$a; ($a的值先加一,在返回$a)
$a++ (后加),返回$a,然后將$a的值加1;
--$a (前減),$a的值減1,然后返回$a;
$a-- (后減),返回$a,然后將$a的值減1; ($a的值先返回$a,在減一)
注:從上面可以看出:前加(減)是先加(減)再返回值,而后加(減)則是先返 回值再加(減)。
十三、三目運算符
三目運算符由兩個表示符號即問號、冒號等組成。其語法格式如下:
(expr1)?(expr2):(expr3);
語句的意思是:當(dāng)expr1為TRUE時返回expr2當(dāng)expr1為FALSE時返回expr3。
十四、流程控制語句
1、if 判斷;
語法:if(expr)
{
statement
.........
}
2、if....else 判斷;
語法:if(expr)
{
statement1;
}
else
{
statement2;
}
3、if....elseif....else 多重判斷;
語法:if(expr)
{
statement1;
}
elseif(expr2)
{
statement2;
}
elseif(expr3)
{
statement3;
}
........
else
{
statementN;
}
4、switch 判斷;
語法: switch($var)
{
case value1;
statment1;
break;
case value2;
statment2;
break;
.......
default:
statmentN;
}
也可以使用以下的語法替代格式:
switch($var):
case value1:
statment1;
break;
case value2:
statment2;
break;
.......
default:
statmentN;
endswitch;
5、while 循環(huán);
語法格式: while(expr)
{
........
statment;
}
6、do 循環(huán);
語法格式:do
{
........
statement;
}
while(expr);
7、for 循環(huán);
語法格式:for (expr1; expr2; expr3)
{
......
statement;
}
常見的格式:for ($i=1; $i<6; $i++)
{
...........
statement;
}
8、foreach 循環(huán);
語法格式: foreach (array_expression as $value)
{
statement;
}
foreach (array_expression as $key => $value)
{
statement;
}
解釋:
(一)、if 判斷是所有的判斷中最簡單的一種。因為其只判斷條件為真的一 種情況,所以也被稱為單重判斷。
(二)、if....else.... 判斷語句在判斷條件為假時不會執(zhí)行指定語句,卻 會執(zhí)行程序所設(shè)定的另外的語句。
(三)、if....elseif...else... 判斷語句時,為了提高效率,一定要把最 有可能為真的語句放到最前面,而把最不可能出現(xiàn)的情況放在最后面。這 樣當(dāng)遇到判斷條件問真時,就不用在執(zhí)行后面的內(nèi)容。
(四)、switch 判斷語句的使用限制。與if elseif else判斷不同,switch 僅能用于判斷的內(nèi)容是一個變量的情況,而其中case后面跟的判斷結(jié)果都 應(yīng)該是一個值而不能是一個表達(dá)式。而if elseif else在這方面則更加自 由,其中的判斷內(nèi)容可以是任意的表達(dá)式。
注意:switch 判斷語句,如果在case后面不加break語句,則switch 會一直執(zhí)行到最后一句case后面的內(nèi)容。所以,通常情況下都需要在每個 case后面加上break語句,以使case執(zhí)行之后跳出整個判斷過程。
(五)、do循環(huán)和while循環(huán)的區(qū)別:
他們的區(qū)別在于:while循環(huán)當(dāng)條件不滿足時,跳出循環(huán),do循環(huán)無論條件 滿足還是不滿足,首先執(zhí)行一次。
(六)、for 循環(huán)中需要三項內(nèi)容,expr1,expr2,expr3分別為三個表達(dá)式,
第一個表達(dá)式(expr1)在循環(huán)開始前無條件求值一次;expr2在每次循環(huán)開
始前求值,如果值為TRUE,則繼續(xù)執(zhí)行循環(huán)體的語句statement。如果值為
FALSE則終止循環(huán),expr3在每次循環(huán)之后被求值(執(zhí)行)。
for循環(huán)與while循環(huán)的比較:
while循環(huán)在知道什么情況下執(zhí)行循環(huán)時相對方便;而for循環(huán)更適合于事 先知道循環(huán)次數(shù)的場合。
(七)、foreach 開始執(zhí)行時,數(shù)組內(nèi)部的指針會自動指向第一個單元,這 意味著不需要在foreach循環(huán)之前調(diào)用reset()(重置數(shù)組)。并在每次循環(huán) 時自動向前移一步。
(八)、break 和 continue 的區(qū)別
break 和 continue 都有跳出循環(huán)的作用,
break主要是無條件的跳出整個循環(huán),continue則是無條件的跳出本 次循環(huán),繼續(xù)執(zhí)行后面的循環(huán)。
使用if判斷語句和continue語句時,如果將它們放到最前面將會造成死循 環(huán)。
十五、用編程的思想解決百錢百雞問題
有100文錢,買100只雞,規(guī)定100只雞中公雞、母雞和小雞。買一只公雞需 要5文錢,買一只母雞需要3文錢,買三只小雞需要1文錢,問:怎樣才能湊 成百錢買百雞?
代碼如下:
<?php
$i=0;
for($x=0;$x<20;$x++)
{
for($y=0;$y<100-$x;$y++)
{
$z=100-$x-$y;
if(5*$x+3*$y+$z/3==100)
{
$i++;
echo "第".$i."種方案:";
echo "公雞數(shù)位:";
echo $x." ";
echo "母雞數(shù)位:";
echo $y." ";
echo "小雞數(shù)位:";
echo $z." ";
echo "<p>";
}
}
}
?>
十六、PHP中的函數(shù)
函數(shù)的定義:簡單的說,函數(shù)是為了完成特定的功能而整體存在的一個代 碼塊。所以從函數(shù)的定義來說,函數(shù)的實質(zhì)就是代碼的集合,也就是一段 能獨立完成某種操作的代碼。
十七、PHP中函數(shù)的定義樣式:
function fun_name(var_name....)
{
/*
這里是具體的代碼
*/
}
所以定義一個函數(shù),使用function關(guān)鍵字+函數(shù)名稱+加一對半角括號,并 在括號中加上所需要的參數(shù)表,然后用一對大括號來包括所有需要執(zhí)行的
代碼即可。
十八、定義函數(shù)是需要遵循的原則
1、函數(shù)名必須依字母開頭。
2、函數(shù)名只能依字母、數(shù)字和下劃線組成,而不能包含空格、標(biāo)點符號及 運算符等其他特殊的符號。
3、函數(shù)名不能與PHP中的關(guān)鍵字名稱相同,如if、else、for等
4、變量名不能與PHP中系統(tǒng)內(nèi)部庫函數(shù)名稱相同。
十九、函數(shù)的返回值
自定義函數(shù)中如果要設(shè)置一個返回值,可以使用如下代碼
function functionname()
{
//函數(shù)體
return result;
}
在函數(shù)體中使用return語句再加上欲返回的內(nèi)容即可。這樣指定的值 result就會作為函數(shù)值被返回。
二十、函數(shù)的參數(shù)
在PHP中函數(shù)的參數(shù)就是寫在函數(shù)名稱后圓括號內(nèi)常量、變量、表達(dá)式,在 這幾種類型中以變量使用的最廣泛。
函數(shù)的創(chuàng)建代碼
function functionname(var_name...)
{
/*
這里是具體的代碼
*/
}
二十一、面向?qū)ο?/p>
面向?qū)ο蟮淖龇ㄍǔJ菫榱送瓿赡骋粋€功能,要先定義一個類,并給該 類添加相應(yīng)的方法。然后再為這個類初始化一個對象,讓對象去執(zhí)行相應(yīng) 的方法,從而完成所需要的功能。
二十二、面向?qū)ο笈c面向過程的特點
1、代碼的封裝不同。
“面向過程”程序設(shè)計的方法使用函數(shù)或者普通的代碼對數(shù)據(jù)進(jìn)行操作 ,在這種方式下使用函數(shù)來處理數(shù)據(jù),而函數(shù)又是與數(shù)據(jù)分離的,所以 面向過程僅封裝了對數(shù)據(jù)的操作方法而沒有封裝數(shù)據(jù)。
“面向?qū)ο?rdquo;程序設(shè)計方法是以對象為中心,使用類將數(shù)據(jù)(屬性)和對 數(shù)據(jù)的操作(方法)封裝在一起,作為已給整體來處理,通過這樣的封裝 ,使得數(shù)據(jù)與操作方法的關(guān)系更加緊密。
2、代碼可維護性不同。
“面向過程”程序設(shè)計方法以代碼所要實現(xiàn)的功能來設(shè)計功能模塊(如 函數(shù)),該種方法難以維護
“面向?qū)ο?rdquo;程序設(shè)計方法以數(shù)據(jù)位中心來描述系統(tǒng),功能實現(xiàn)千變?nèi)f 化,有時一點很小的功能改動可能會導(dǎo)致全盤重做,而數(shù)據(jù)則相對穩(wěn)定 ,即使發(fā)生變化,只需要改動相應(yīng)內(nèi)容即可。所以面向?qū)ο蟮拇a比面 向過程的代碼更加容易維護。
3、流程控制不同。
“面向過程”程序的控制流程由程序中預(yù)定順序來決定,所以說其流程 是死板的。
“面向?qū)ο?rdquo;程序的控制流程由運行時各種事件的實際發(fā)生來觸發(fā),而 不在由預(yù)定順序來決定。這中流程的控制方式更加靈活,也更符合實際 需要。
4、框架利用不同。
如今網(wǎng)絡(luò)技術(shù)飛速發(fā)展,網(wǎng)上有非常多得開源框架資源,面向?qū)ο蟪绦?nbsp; 設(shè)計方法可以充分利用已有的框架產(chǎn)品進(jìn)行二次開發(fā);這種方面,使用 面向過程,雖然可以使用一些函數(shù)之類來完成相關(guān)功能模塊的構(gòu)建,但 遠(yuǎn)不如使用己有框架來的方便。
通過以上的比較可以發(fā)現(xiàn),面向?qū)ο笈c面向過程二者各有有缺點。在實際 工作中,如果是開發(fā)團隊協(xié)同工作大型程序,最好采用面對對象編程的方 法。如果是個人開發(fā)的小型程序,而且工作量不大,可以根據(jù)實際情況采 用自己喜歡的方法。
二十三、PHP中定義一個類的語法格式:
class classname
{
var $var;
function functionname()
{
....
statement;
}
}
二十四、為類實例化對象
$obj_name=new classname;
以上代碼中,classname為指定已經(jīng)存在的類的名稱,而$obj_name則為 需要對類實例化的對象。在PHP中為類實例化一個獨享應(yīng)該在創(chuàng)建類之后 ,使用"new" 關(guān)鍵字在跟上類的名稱即可。
二十五、使用對象
$obj_name=new classname;
$obj_name->varname;
$obj_name->functionname();
以上代碼中我們可以看出,PHP中調(diào)用對象的屬性和方法使用"->"操作符號 加上屬性的名稱或方法的名稱。這里需要注意,調(diào)用對象屬性(變量)時不 需要再加"$"符號,而調(diào)用對象方法(函數(shù))時需要在函數(shù)名后在加上括號。 對象屬性就可以當(dāng)做普通變量使用,而其他方法也可以當(dāng)做普通函數(shù)使用 。
二十六、類的繼承
繼承是一種由己有地類創(chuàng)建新類的機制,利用繼承,用戶可以先創(chuàng)建一個 共有屬性的一般類,根據(jù)該一般類再創(chuàng)建具有特殊屬性的新類。新類繼承 一般類的狀態(tài)和行為,并根據(jù)需要增加它自己的新的狀態(tài)和行為。由繼承 而得到的類稱為子類,被繼承的類稱為父類。在php中使用關(guān)鍵字extends 來創(chuàng)建繼承父類的子類。
語法格式:
class parent_class
{
var $varname
function functionname()
{
.......
statement;
}
}
class child_class extends parent_class
{
var $var
function function()
{
.....
statement;
}
}
二十七、類的引用
類的引用就是值在一個類中使用另一個類中定義的屬性和方法。要在一 個類中引用另一個類的內(nèi)容,
可以使用如下代碼格式:
class classname
{
var $varname;
function functionname()
{
......
statement;
}
}
class otherclass
{
classname::functionname();
classname::$varname;
}
在一個類中引用另一個類的屬性和方法,需要使用類的名稱加上"::"再 加上方法或者屬性名稱既可(方法需要跟上參數(shù)表,屬性需要加美元符號 )。
二十八、類的構(gòu)造方法
類的構(gòu)造函數(shù)是在為類實例化一個對象是會執(zhí)行的一個方法。在PHP中使 用特殊的函數(shù)__construct()來表示類的構(gòu)造方法(雙下劃線加construct 加上一對括號來表示)。構(gòu)造函數(shù)一般用于初始化類的一些重要屬性。
其語法格式:
class classname
{
var $var;
function __construct([$var])
{
......
}
}
在一個類中只能聲明一個構(gòu)造方法,而且只有在每次創(chuàng)建對象時調(diào)用一
次構(gòu)造方法,不能主動地調(diào)用這個方法。所以通常用構(gòu)造方法執(zhí)行一些
有用的初始化任務(wù)。如對對象屬性在創(chuàng)建時賦初值。
二十九、檢查類是否定義
PHP系統(tǒng)總檢查類是否被定義用 class_exists(),語法格式:
bool class_exists(string $class_name[,bool $autoload])
三十、 返回類的方法名
PHP中系統(tǒng)函數(shù)中得get_class_methods()函數(shù),可以將類的方法以數(shù)組
的形式返回,該函數(shù)的語法格式:
array get_class_methods(string $class_name)
三十一、返回類的屬性
PHP還可以使用系統(tǒng)函數(shù)返回類中屬性的名稱。使用get_class_vars()即
可返回由類的默認(rèn)屬性組成的數(shù)組。該代碼的語法格式:
array get_class_vars(string $class_name)
三十二、返回對象的類名
使用PHP中得系統(tǒng)函數(shù)get_class()可以返回指定對象所屬的類的名稱。
該函數(shù)的語法格式如下:
string get_class([object $obj])
三十三、檢查類與對象的關(guān)系
PHP提供了用于檢查類與對象關(guān)系的關(guān)鍵字:instanceof,使用該關(guān)鍵字
可以判斷某一個對象是否是類的子類。該操作符的語法格式如下:
$object instanceof $class_name
三十四、檢查方法是否存在
PHP中用于檢查類中指定方法是否存在的函數(shù)是:method_exists()
該函數(shù)的語法格式如下:
bool method_exists(object $object,string $mothod_name)
三十五、檢查屬性是否存在
PHP中使用property_exists()函數(shù)可以檢查屬性是否存在
該函數(shù)的語法格式為:
bool property_exists(mixed $class,string $property)
三十六、數(shù)據(jù)庫的操作
鏈接到數(shù)據(jù)庫:
使用PHP中得函數(shù)mysql_connect()可以鏈接到指定的MySQL服務(wù)器,
該函數(shù)語法為:
resource mysql_connect([string server[,string username [,string password[,bool new_link[,int client_flags]]]]])
以上代碼中:參數(shù)server為服務(wù)器名稱;參數(shù)username為鏈接服務(wù)器的
用戶名;參數(shù)password為連接密碼;參數(shù)new_link為布爾型變量,指定
是否建立一個姓的連接;參數(shù)client_flags可以是一下常量的組合,
MYSQL_CLIENT_SSL, MYSQL_CLIENT_COMPRESS, MYSQL_CLIENT_IGNORE_SPACE, MYSQL_CLIENT_INTERACTIVE,
該參數(shù)決定建立連接的客戶端常量。如果成功執(zhí)行函數(shù)將會建立到指定
服務(wù)器的連接,否則將會返回FALSE。
- 1SEOer要學(xué)會尋找優(yōu)質(zhì)外鏈
- 2ECSHOP怎樣去除版權(quán)
- 3關(guān)鍵字排名優(yōu)化服務(wù)
- 4seo搜索引擎優(yōu)化的秘訣
- 5開發(fā)在制作的時候就要從購房者的角度去考慮
- 6不能因為有了好用的熱水器就毫無節(jié)制的洗澡
- 7計件工資系統(tǒng)分享—企業(yè)ERP系統(tǒng)失敗的三大原因
- 8電子郵件加密傳輸
- 9義烏手機APP程序開發(fā)三條妙招助企業(yè)應(yīng)用開發(fā)
- 10連鎖式經(jīng)營的管理辦法
- 11為防止水堿、水垢大量附著在熱水器內(nèi)膽內(nèi)
- 12八種賺不到錢的站長
- 13什么樣的網(wǎng)站是電子商務(wù)網(wǎng)站?
- 14義烏軟件公司分享ERP系統(tǒng)需要用戶需求統(tǒng)一
- 15企業(yè)培訓(xùn)機構(gòu)網(wǎng)站設(shè)計方案
- 16怎么查看別人的微信聊天記錄內(nèi)容
- 17測試一下你的搜索引擎收錄
- 18中揚科技做臨沂最專業(yè)的APP
- 19ONU的主要特點
- 20細(xì)談虛擬主機常見問題
- 21域名解析常見問題
- 22母體專為新生寶寶準(zhǔn)備絕無僅有的特別營養(yǎng)食物
- 23淺談搜索引擎對新站收錄的要求
- 24作為站長怎樣快速增加流量
- 25PHP + AJAXauxin分頁
- 26域名解析和DNS修改的區(qū)別
- 27為大家詳細(xì)介紹沙盤模型在建筑物中作用有哪些
- 28ERP系統(tǒng)與SCM系統(tǒng)七大重疊功能
- 29現(xiàn)在很多購房者在買房前都忽略看沙盤這一項
- 30網(wǎng)站優(yōu)化價位是多少
成都公司:成都市成華區(qū)建設(shè)南路160號1層9號
重慶公司:重慶市江北區(qū)紅旗河溝華創(chuàng)商務(wù)大廈18樓