一、變量的命名規則:
變量名由字母或者下劃線開頭,後面跟上任意數量的字母、數字或者下劃線。
變量的開頭一定要有$;
變量中不能有特殊運算符;
變量中不能一數字開頭;
禁止使用系統關鍵字作爲變量名稱;
變量名一定要有意義;
變量名區分大小寫,但內置結構和關鍵字以及用戶自定義的類名和函數名都是不區分大小寫的;
二、在程序中使用空白行的處理:
1、使用兩個空行:
一個源文件的兩個代碼片段之間;
兩個類的聲明之間;
2、使用一個空行:
兩個函數聲明之間;
函數內的局部變量和函數的第一條語句之間;
塊註釋或單行註釋之前;
一個函數內的兩個邏輯代碼段之間;
3、代碼縮進:
代碼必須使用4個空格來進行縮進,禁止使用TAB鍵
如果軟件中TAB縮進不是四個空格,需要設置爲四個空格
三、變量的類型(8種):
一、四種標量類型:
整型(integer)
浮點型(float double)
字符串(string)
布爾型(boolean)
注意:字符串可以用三種字面上的方法定義:
單引號 '';
雙引號"";
定界符<<<;
二、兩種複合類型:
數組(array)
對象(object)
三、兩種特殊類型:
資源(resource)
NULL
四、僞類型:
僞類型並不是PHP語言中的基本數據類型,只是因爲PHP是弱類型語言,所以在一些函數中,一個參數可以接收多種類型的數據,還可以接收別的函數作爲回調函數使用。爲了確保代碼的易讀性在本書中介紹一些僞類型的使用。(例子:瓶子與酒瓶的區別。酒瓶裏只能裝酒,而瓶子裏可以裝酒、醋、醬油、水等。弱類型的就是瓶子,可以接受多種類型的數據)
mixed:說明一個參數可以接受多種不同的(但並不必須是所有的)類型;
number:說明一個參數可以是 integer 或者 float。
callback:有些諸如 call_user_function() 或 usort() 的函數接受用戶自定義的函數作爲一個參數。
callback函數不僅可以是一個簡單的函數,它還可以是一個對象的方法,包括靜態類的方法。
一個PHP函數用函數名 ,字符串來傳遞。可以傳遞任何內置的或者用戶自定義的函數,除了array(), echo(),
empty(), eval(), exit(), isset(), list(), print() 和 unset(0.
四、單雙引號的區別:
單雙引號可以互插
單引號的的效率更高
單引號不能解析變量,雙引號可以
單引號可以解析 “單引號 、\”,雙引號可以解析更多的轉義字符
雙引號中可以插入單引號,單引號中的變量會被解析,同時保留單引號
拼接一個變量和字符串,或兩個變量之間用“.”
<?php
$a = 'abc';
$b = "xyz";
// 1,單引號內的變量不能被解析,雙引號內的變量可以被解析
$c = '$a';
$c = "$a";
var_dump($c);
// 2,單引號內可以插入雙引號,雙引號內可以插入單引號
/*echo $d = 'nihao "zhongguo"';
echo $e = "nihao 'taiwan'";
*/
//3,單引號可以解析 單引號,\ ,雙音號可以解析更多的轉義字符
echo $f = 'ni\\h\n \$ao \'hanguo\'';
echo $h = "ni\nhao \"jiangsu\" \$";
//4,單引號的效率更高
//5,拼接兩個變量,或者拼接變量和字符串使用 "."
echo '<br>';
$a = 'wo ai ni zhongguo,';
$b = 'wo ai ni beijing';
echo '我說:'.$a.$b.'zheng doushi zhende?';
$color = 'red';
$border = '10';
//6單引號內插入雙引號,雙引號內的變量不會被解析
echo '<table border="'.$border.'" bgcolor="'.$color.'"><tr><td>內容</td></tr></table>';
$border = 2;
$color = 'pink';
//7雙引號內插入單引號,單引號內的變量會被解析,同時保留單引號
echo "<table border='$border' bgcolor='$color'><tr><td>內容</td></tr></table>";
// 用途2: 不需要記下 瞭解即可:$username = 'jack';
// $sql = "select * from bbs_user where user='$username'";
五、PHP中那些變量轉換成布爾型時爲false的有:
整型0
浮點0
空字符串字符串0
空數組
空對象、空資源
false本身
被銷燬的變量unset() ,和未定義的變量
NULL
被賦值爲NULL值的變量;
尚未被賦值的變量;
被unset()函數銷燬的變量
口訣:四大皆空,三零
<?php
header("content-type:text/html;charset=utf-8");
//布爾值參與算術運算時 true 轉爲1 false 0
$boo = true;
$boo = false;
var_dump($boo + 10);
//下列情況爲false
//1、整型0
$num = 0;
$num = -0;
//2、浮點型
$num = 0.0;
$num = 1.1;
//3、字符串
$num = 'a';
$num = 'abc';
$num = '0.0';
$num = 'false';
$num = '0';
//4、空字符串
$num = '';
//5、空數組、空對象
$num = array();
$num = array(0);
//6、null、空資源
$num = null;
//7、false本身
//8、被銷燬的變量unset();
if($num){
echo'真';
}else{
echo'假';
}
unset($num);
var_dump($num);
六、參與算術運算時,各種類型結果:
<?php
//如果非數字開頭的字符串參與算術運算,字符串轉成0
$str = 'alibbaba';
//如果字符串以數字開頭,參與算術運算,只有數字部分會參與運算
$str = '10abc';
$str = '10.01abn';
//$str = 'abc100';
var_dump($str + 10);
結果:float(20.01)
<?php
$f = 10.1;
// 任何一個浮點參與算術運算,結果必然是浮點
var_dump(10.0 + 10);
var_dump('10.0abc' * 10)
結果:float(20) float(20)
七、常量的定義與使用:
常量是一個簡單值的標識符(名字)。
在腳本執行期間一個常量一旦被定義,就不能再改變或取消定義。
常量的命名規則:
常量默認爲大小寫敏感。按照慣例常量標識符總是大寫的。
常量名和其他任何PHP標籤遵循同樣的命名規則。合法的常量名以字母或下劃線開始,後面跟任何字母,數字或下劃線。
常量的定義方式:
我們可以用const 和 define() 函數來定義常量。
格式:const DB_NAME = 'bbs';
const DB_HOST = 'localhost';
define('DB_USER','root');
語法:bool define(string name ,mixed value ,[bool case_insensitive])
其中name表示常量名,value表示常量值或表達式,但是常量只能包含標量數據(integer、float、string和boolean)。
第三個[]中的爲可選參數case_insensitive設置爲true時則表示常量名不區分大小寫。
<?php
define("CON_INT",100);
//輸出:100
echo CON_INT;
define("GREETING","HELLO you",true);
//輸出:HELLO you
echo GREETING;
//輸出:HELLO you
echo constant ("Greeting");
常量和變量的不同:
常量前面沒有美元符號($);
使用 const 和 define()定義;
遵循變量的命名規則;
一旦定義不能更改和取消;
全局有效;
常量的值只能是標量(4種);
建議使用大寫;
可以用函數 constant()來讀取常量的值;
用 get_defined_constants()可以獲得所有已定義的常量列表。
預定義常量:
__LINE__
__FILE__
__FUNCTION__
__CLASS__
__METHOD__
<?php
const DB_HOST = 'localhost';
define('DB_USER','root');
echo DB_HOST;
echo DB_USER;
// 返回當前文件的完整路徑和文件名
echo __FILE__;
//返回當前所在的行數
echo __LINE__;
function show()
{
// 當前函數名
echo __FUNCTION__;
echo 'aaaa';
}
// 調用函數方式:函數名+()
show();
/*
// 返回當前類名
__CLASS__;
//返回當前的方法名
__METHOD__;
*
八、定界符:
前邊提到字符串可以用三種字面上的方法定義:
單引號 '';
雙引號"";
定界符<<<;
那麼定界符的定義是:另一種給字符串定界的方法使用定界符語法(“<<<”)。應該在 <<< 之後提供一個標識符(EOT),然後是字符串,然後是同樣的標識符結束字符串。
定界符中標識符的命名規則與變量的命名規則一樣。只能包含字母數字下劃線,而且必須以下劃線或非數字字符開始。
注:結束標識必須從行的第一列開始,並且所在的行不能包含任何其它字符,可能除了一個分號(;)之外,空格以及空白製表符都不可以。這尤其意味着該結束標識符不能被縮進,而且在分號之前和之後都不能有任何空格或製表符。如果破壞了這條規則使得結束標識符不“乾淨”,則它不會被視爲結束標識符,PHP 將繼續尋找下去。如果在這種情況下找不到合適的結束標識符,將會導致一個在腳本最後一行出現的語法錯誤。
不能用定界符語法初始化類成員。用其它字符串語法替代。
定界符文本的表現和雙引號字符串一樣,可以使用轉義符號,可以解析變量,只是沒有雙引號。
定界符通常用於從文件或者數據庫中大段的輸出文檔。
<?php
$db_host = '127.0.0.1';
$db_user = 'lily';
$db_pwd = '123456';
$str=<<<ETO
<?php
//開啓會話
session_start();
//設置網頁字符集
header("content-type:text/html;charset=utf-8");
//設置時區
date_default_timezone_set('PRC');
//數據庫相關設置
const DB_HOST = '$db_host';
const DB_USER = '$db_user';
const DB_PWD = '$db_pwd';
const DB_NAME = 'bbs81';
const DB_CHARSET = 'utf8';
// 鏈接數據庫
$link = mysql_connect(DB_HOST,DB_USER,DB_PWD)or die('連接數據庫失敗');
mysql_select_db(DB_NAME);
mysql_set_charset(DB_CHARSET);
ETO;
// 將字符串寫入指定文件,如果文件不存在自動創建
file_put_contents('config.php',$str);
在字符串中常用的轉義字符:在需要轉義的符號前輸入“\”
九、數據類型之間相互轉換:
PHP在變量定義中不需要明示變量的類型定義,變量類型是根據使用該變量的上下文所決定的。
類型轉換時指將變量或值從一個數據類型轉換成其他數據類型。轉換的方法有兩種:1、自動轉換;2、強制轉換
類型的強制轉換:PHP 中的類型強制轉換和 C 中的非常像:在要轉換的變量之前加上用括號括起來的目標類型。
允許的強制轉換有:
(int),(integer) - 轉換成整型
intval()獲取變量的整數值
(bool),(boolean) - 轉換成布爾型
(float),(double),(real) - 轉換成浮點型
(string) - 轉換成字符串
(array) - 轉換成數組
(object) - 轉換成對象
注意:在括號內允許有空格和製表符,爲了將一個變量還原爲字符串,還可以將變量放置在雙引號中。
<?php
$str = 'abc';
$str = 123;
$str = array();
echo gettype($str);
echo'<hr>';
//強制將字符串轉換爲整型
$str = '11xx2344zz';
$result =(int) $str;
echo gettype($str);
echo '<br>';
//var_dump($result);
echo gettype($result);
echo'<hr>';
$arr = array(1,2);
$result= (int) $arr;
echo gettype($arr);
echo '<br>';
echo gettype($result);
echo'<hr>';
//強制將字符串轉換爲數組
$str ='a,b,c';
$result = (int) $str;
echo gettype($str);
echo '<br>';
echo gettype($result);
echo '<br>';
echo $result;
echo '<hr>';
//強制轉換爲字符串
$str = 1;
$result = (string) $str;
echo gettype($str);
echo '<br>';
echo gettype($result);
echo '<br>';
echo $result;
echo '<br>';
var_dump($result);
echo '<hr>';
//獲取數據的類型
$num = 10;
echo gettype($num);
echo '<hr>';
//獲取變量的整數值(爲啥結果中不顯示呢?)
$result = intval($num);
var_dump($result);
echo '<hr>';
//獲取變量的字符串值
var_dump(strval(123456));
輸出結果:
array
string
integer
array
integer
string
integer
0
integer
string
1
string(1) "1"
integer
int(10)
string(6) "123456"
十、變量類型的測試函數:
is_bool():判斷是否是布爾型
is_int()、is_integer()和is_long():判斷是否爲整型。
is_float()、is_double()和is_real():判斷是否爲浮點型
is_string():判斷是否爲字符串
is_array():判斷是否爲數組
is_object():判斷是否爲對象
is_resource():判斷是否爲資源類型
is_null():判斷是否爲null
is_scalar():判斷是否爲標量
is_numeric():判斷是否是任何類型的數字和數字字符串
is_callable():判斷是否是有效的函數名
函數:bool settype ( mixed var, string type )
是將變量 var 的類型設置成 type。
<?php
header("content-type:text/html;charset=utf-8");
$arr = array('username'=>'jack','sex'=>'男','age'=>23);
// $arr = 'abc';
/*echo '<pre>';
print_r($arr);
var_dump($arr);*/
$arr = '新中國成立啦';
if(is_array($arr)){
echo '<pre>';
print_r($arr);
}else{
echo '<pre>';
var_dump($arr);
}
// 判斷是否是一個有效的函數
if(is_callable('xx')){
echo '這是一個有效的函數';
}else{
echo '這不是一個函數';
}
function xx()
{
echo 'xxx';
}
$str = '1000abc';
//將字符串轉換成整型
settype($str,'int');
var_dump($str);