PHP語法特點
感覺PHP在語法上與C++特別相似。只要會C++,PHP基本上不用記什么。
語法上有這些特點:
1. 數據類型
null, bool, string, float, integer, array, object
object 是 new 出來的對象
轉換類型與 C 一樣。
2. PHP里所有的變量名都是以 $ 開頭
在Shell里,只有獲取變量的時候才需要加$符號,在PHP里,所獲取還是設置都要加 $ 符號
$str = "hello"; echo $str;
3. PHP里變量名區分大小寫,函數名不分
$str = "String\n"; $STR = "This is STR\n"; echo $str; ECho $str; echo $STR;
結果輸出:
String
String
This is STR
4. PHP里的注釋除了C++有的 // /**/ 外,還有腳本常用的 #
// 注釋 /* * 注釋 */ # 注釋
5. 定義變量時無需指明類型
這點與 python, lua一樣,這也是大多數據腳本的共性。
6. 數據組是 array
用作數組時:
$arr = array("C++", "C", "Java", "PHP");
用作映射表時:
$map = array("John"=>"M", "Lily"=>"F");
如果不指定鍵值,那么它就是數字 0,1,2,3...為鍵。如果指定了鍵值,那就以指定的鍵值為鍵。
其功能非常類似于Lua的表。Lua的如下:
w = {x=0, y=0, label="console"}
不過 Lua 的有點怪異,非得從1開始計數。
7. 邏輯語句與C++一樣
if .. else if .. else, for, while, continue, break等與C++一樣。只不過,PHP還支持用 : ... endXXX 來代替 { ... }
if ($num == 0) {
echo "num = " . $num;
}
也可以寫成如下
if ($num == 0) :
echo "num = " . $num;
endif</pre>
有 ++$i 與 $i++,與C++一樣。
8. 字符串用 . 進行連接
這一點跟 Lua 類似,Lua 是用 .. 進行字符串拼接的。
9. 字符串用單引號或雙引號界定
$name = 'Peter';
echo 'My name is $name\n';
echo "My name is $name\n";
echo "===="
My name is $name\nMy name is Peter
====
在單引號里 $name 與 \n 都沒有被重新計算。而雙引號則會被替代。這點跟shell一樣。
10. 有 === (恒等)與 !== (不恒等)比較。恒等的意思是不僅值相等,類型還一樣
11. 函數的定義
function PrintName($name = "Unknow") {
if (is_string($name)) {
echo "My name is $name\n";
return TRUE;
}
return FALSE;
}
PrintName("Hevake");
與 Lua 類似,也可以帶默認值
12. 常量
define("NAME", "hevake_lcj"); # 定義常量
echo constant("name"); # 取常量
if (defined("name")) { # 檢查是否定義了常量 name
echo "定義了 name";
}
13. 可變變量
<?php
$text="My Name";
$a = "text";
echo $$a;
echo '<br>';
$b = 'a';
echo $$$b;
?>

$text, $$a, $$$b的結果都是“My Name”。
函數也可以這樣引用:
<?php
function come() {
echo "I am coming. <br/>";
}
function back() {
echo "I am back. <br/>";
}
$func = "come";
$func();
$func = "back";
$func();
?>

14. 預定義環境變量
$_SERVER, $_COOKIE, $_SESSION, $_POST, $_GET, $GLOBALS
15. 函數可以以引用傳參
<?php
function example(&$m) {
$m = $m * 5 + 10;
}
$m = 1;
example($m);
echo "<p>在函數外:\$m = $m</p>";
?>

16. foreach循環
<?php
$map = array('john'=>18, 'licy'=>22);
foreach ($map as $key=>$value) {
echo "$key=>$value, ";
}
echo '<br/>';
?>

http://my.oschina.net/hevakelcj/blog/326907