一、echo語句
1.格式
echo是PHP中的輸出語句,可以把字符串輸出(字符串用雙引號括起來,echo關鍵字與字符串之間至少有一個空格)
示例代碼:
<?php echo "Hello world!";?>
2.計算表達式
echo 120 * 3;
3.字符串
可以使用雙引號或者單引號,還可以使用(.)做鏈接符
<?php echo "Hi,shuaishuai!";?>
<?php echo 'Hi,shuaishuai!';?>
<?php echo 'Hi,'.'shuaishuai';?>
二、php變量
在PHP中,支持8中原始類型,其中包括四種標量類型、兩種復合類型和兩種特殊類型。PHP是一門松散類型的語言,不必向PHP聲明變量的數據類型,PHP會自動把變量轉換為自動的數據。
1.標量類型 - 布爾類型
布爾類型(boolean):只有兩個值,一個是TRUE,另一個FALSE,可以理解為是或否。他不區分大小寫,也就是說"TRUE"和"true"效果是一樣的。
需要注意的是,當我們用echo指令輸出布爾類型時,如果"true"則輸出是"1","false"則什么也不輸出。我們可以用var_dump函數,獲取他真正的數據類型
<?php
$man = "男";
$flag = $man == "男";
echo $flag ;
echo "<br />" ;
var_dump($flag);
?>
2.標量類型—整型
整型(integer):類似于常見的整數。它可以用十進制、八進制、十六進制指定。十進制就是日常使用的數字;八進制,數字前必須加上“0”(這個0是阿拉伯數字0,可不是英文字母“歐”哦);十六進制,數字前必須加“0x” (這個0也是阿拉伯數字0,不是“歐”哦)。
<?php
$data_int1 = 123;
echo $data_int1;
echo "<br />";
$data_int2 = -123;
echo $data_int2;
echo "<br />";
$data_int3 = 0123;
echo $data_int3;
echo "<br />";
$data_int4 = 0x123;
echo $data_int4;
echo "<br />";
?>
3.標量類型—浮點型
浮點型(浮點數、雙精度數或實數),也就是通常說的小數,可以用小數點或者科學計數法表示。科學計數法可以使用小寫的e,也可以使用大寫的E。
<?php
$num_float1 = 1.234;
echo $num_float1;
echo "<br />";
$num_float2 = 1.2e3;
echo $num_float2;
echo "<br />";
$num_float3 = 7.0E-3;
echo $num_float3;
echo "<br />";
?>
4.標量類型—字符串
字符串是由一系列字符組成,在PHP中,字符和字節一樣,也就是說,一共有256種不同字符的可能性。
字符串型可以用三種方法定義:單引號形式、雙引號形式和Heredoc結構形式。
<?php
$str_string1 = '甲問:"你是在哪里學的PHP?"';
$str_string2 = "乙毫不猶豫的回答:'當然是帥哥網咯!'";
$str_string3 = '甲問:\'能告訴我網址嗎?\'';
$str_string4 = "乙答道:\"www.baidu.com\"";
echo $str_string1;
echo "<br />";
echo $str_string2;
echo "<br />";
echo $str_string3;
echo "<br />";
echo $str_string4;
echo "<br />";
?>
處理字符串很長的情況:
我們可以使用Heredoc結構形式的方法來解決該問題,首先使用定界符表示字符串(<<<),接著在“<<<“之后提供一個標識符GOD,然后是字符串,最后以提供的這個標識符結束字符串,如下:
<?php
$string1 = <<<GOD
我有一只小毛驢,我從來也不騎。
有一天我心血來潮,騎著去趕集。
我手里拿著小皮鞭,我心里正得意。
不知怎么嘩啦啦啦啦,我摔了一身泥.
GOD;
echo $string1;
?>
注意 在賦值符號后,輸入定界符“<<<”,接著是標識符,你可以用你的女神作為標識符“GOD”,如第2行,也可以使用你喜歡的狗狗,“DOG”作為標識符,但是,結尾處的標識符也必須是一樣的。此外,在結尾的一行,如第7行,一定要另起一行,并且此行除了“GOD”,并以“;”號結束之外,不能有任何其他字符,前后都不能有,包括空格,否則會出現錯誤的哦。
5.第一種特殊類型—資源
資源(resource):資源是由專門的函數來建立和使用的,例如打開文件、數據連接、圖形畫布。我們可以對資源進行操作(創建、使用和釋放)。任何資源,在不需要的時候應該被及時釋放。如果我們忘記了釋放資源,系統自動啟用垃圾回收機制,在頁面執行完畢后回收資源,以避免內存被消耗殆盡。
<?php
$file=fopen("f.txt","r"); //打開文件
$con=mysql_connect("localhost","root","root"); //連接數據庫
$img=imagecreate(100,100);//圖形畫布
?>
<?php
//首先采用“fopen”函數打開文件,得到返回值的就是資源類型。
$file_handle = fopen("/data/webroot/resource/php/f.txt","r");
if ($file_handle){
//接著采用while循環(后面語言結構語句中的循環結構會詳細介紹)一行行地讀取文件,然后輸出每行的文字
while (!feof($file_handle)) { //判斷是否到最后一行
$line = fgets($file_handle); //讀取一行文本
echo $line; //輸出一行文本
echo "<br />"; //換行
}
}
fclose($file_handle);//關閉文件
?>
6.第二種特殊類型—空類型
NULL(NULL):NULL是空類型,對大小寫不敏感,NULL類型只有一個取值,表示一個變量沒有值,當被賦值為NULL,或者尚未被賦值,或者被unset(),這三種情況下變量被認為為NULL。
<?php
error_reporting(0); //禁止顯示PHP警告提示
$var;
var_dump($var);
$var1 = null;
var_dump($var1);
$var2 = NULL;
var_dump( $var2);
$var3 = "節日快樂!";
unset($var3);// 釋放$var3
var_dump($var3);
?>
三.php常量
define()函數的語法格式為:
bool define(string $constant_name, mixed $value[, $case_sensitive = true])
它有3個參數(也就是原料):
第一個參數“constant_name”為必選參數,常量名稱,即標志符,常量的命名規則與變量的一致,但是要注意哦,它可不帶美元符號哦。第二個參數“value”為必選參數,它是常量的值。第三個參數“case_sensitive”為可選參數,指定是否大小寫敏感,設定為true表示不敏感,一般不指定第三個參數的情況下,默認第三個參數的值為false。
(注: string表示參數類型為字符串類型,mixed表示參數類型可以接受為多種不同的類型,case_sensitive = true表示默認為布爾類型TRUE)
<?php
$p = "PII";
define("PI",3.14);
define($p,3.14);
echo PI;
echo "<br />";
echo PII;
?>
認識一下系統常量
系統常量是PHP已經定義好的常量,我們可以直接拿來使用,常見的系統常量有:
(1)FILE :php程序文件名。它可以幫助我們獲取當前文件在服務器的物理位置。
(2)LINE :PHP程序文件行數。它可以告訴我們,當前代碼在第幾行。
(3)PHP_VERSION:當前解析器的版本號。它可以告訴我們當前PHP解析器的版本號,我們可以提前知道我們的PHP代碼是否可被該PHP解析器解析。
(4)PHP_OS:執行當前PHP版本的操作系統名稱。它可以告訴我們服務器所用的操作系統名稱,我們可以根據該操作系統優化我們的代碼。
echo __FILE__;
echo "<br />";
echo __LINE__;
echo "<br />";
echo PHP_VERSION;
echo "<br />";
echo PHP_OS;
echo "<br />";
四、數組
索引和關聯兩個詞都是針對數組的鍵而言的。
1.索引數組
索引數組是指數組的鍵是整數的數組,并且鍵的整數順序是從0開始,依次類推。
$fruit = array("蘋果","香蕉","菠蘿");
注意數組的鍵是從0開始的。可以使用print_r($fruit);
語句輸出數組鍵及對應的值
1.1索引數組賦值
索引數組賦值有三種方式:
- 第一種:用數組變量的名字后面跟一個中括號的方式賦值,當然,索引數組中,中括號內的鍵一定是整數。比如,$arr[0]='蘋果';
- 第二種:用array()創建一個空數組,使用=>符號來分隔鍵和值,左側表示鍵,右側表示值。當然,索引數組中,鍵一定是整數。比如,array('0'=>'蘋果');
- 第三種:用array()創建一個空數組,直接在數組里用英文的單引號'或者英文的雙引號"賦值,數組會默認建立從0開始的整數的鍵。比如array('蘋果');這個數組相當于array('0'=>'蘋果');
1.2訪問索引數組內容
有的時候我們需要把數組中的內容也就是值取出來該怎么辦呢?用數組變量的名字后跟的中括號中的鍵,來訪問數組中的值。
$fruit = array('蘋果','香蕉');
$fruit0 = $fruit['0'];
print_r($fruit0);//結果為蘋果
1.3數組的迭代
1.3.1for循環:
$fruit=array('蘋果','香蕉','菠蘿');
for($i=0; $i<3; $i++){
echo '<br>數組第'.$i.'值是:'.$fruit[$i];
}
1.3.2foreach循環訪問索引數組里的值
$fruit=array('蘋果','香蕉','菠蘿');
foreach($fruit as $k=>$v){
echo '<br>第'.$k.'值是:'.$v;
}
2.關聯數組
$fruit = array(
'apple'=>"蘋果",
'banana'=>"香蕉",
'pineapple'=>"菠蘿"
);
2.1關聯數組賦值
關聯數組賦值有兩種方式:
- 第一種:用數組變量的名字后面跟一個中括號的方式賦值,當然,關聯數組中,中括號內的鍵一定是字符串。比如,$arr['apple']='蘋果';
- 第二種:用array()創建一個空數組,使用=>符號來分隔鍵和值,左側表示鍵,右側表示值。當然,關聯數組中,鍵一定是字符串。比如,array('apple'=>'蘋果');
2.2訪問關聯數組內容
用數組變量的名字后跟中括號+鍵的方式來訪問數組中的值,鍵使用單引號或者雙引號括起來。
$fruit = array('apple'=>"蘋果",'banana'=>"香蕉",'pineapple'=>"菠蘿");
$fruit0 = $fruit['banana'];
print_r($fruit0);
2.3foreach循環訪問關聯數組里的值
foreach循環可以將數組里的所有值都訪問到,下面我們展示下,用foreach循環訪問關聯數組里的值
$fruit=array('apple'=>"蘋果",'banana'=>"香蕉",'pineapple'=>"菠蘿");
foreach($fruit as $k=>$v){
echo '<br>水果的英文鍵名:'.$k.',對應的值是:'.$v;
}
五、函數
1.自定義函數
PHP函數的定義方式:
- 1.使用關鍵字“function”開始
- 2.函數名可以是字母或下劃線開頭:function name()
- 3.在大括號中編寫函數體:
function name() {
echo 'Eric';
}
2.帶形參函數
function sum($a, $b) {
return $a+$b;
}
3.帶返回值函數
function add($a) {
return $a+1;
}
$b = add(1);
4.自定義函數
所謂可變函數,即通過變量的值來調用函數,因為變量的值是可變的,所以可以通過改變一個變量的值來實現調用不同的函數。經常會用在回調函數、函數列表,或者根據動態參數來調用不同的函數。可變函數的調用方法為變量名加括號
function name() {
echo 'jobs';
}
$func = 'name';
$func(); //調用可變函數
class book {
function getName() {
return 'bookname';
}
}
$func = 'getName';
$book = new book();
$book->$func();
5.內置函數
內置函數指的是PHP默認支持的函數,PHP內置了很多標準的常用的處理函數,包括字符串處理、數組函數、文件處理、session與cookie處理等。
我們先拿字符串處理函數來舉例,通過內置函數str_replace可以實現字符串的替換。下面的例子將“jobs”替換成“steven jobs”:
$str = 'i am jobs.';
$str = str_replace('jobs', 'steven jobs', $str);
echo $str; //結果為“i am steven jobs”
6.判斷函數是否存在
當我們創建了自定義函數,并且了解了可變函數的用法,為了確保程序調用的函數是存在的,經常會先使用function_exists判斷一下函數是否存在。同樣的method_exists可以用來檢測類的方法是否存在。
function func() {
}
if (function_exists('func')){
echo 'exists';
}
class MyClass{
}
// 使用前檢查類是否存在
if (class_exists('MyClass')) {
$myclass = new MyClass();
}
$filename = 'test.txt';
if (!file_exists($filename)) {
echo $filename . ' not exists.';
}