只是打印出 hello world
確定是不夠的,是嗎?你會但願作得比這還要多——你想要輸入一些內容,操縱它,而後從中獲得一些輸出出來的內容。咱們能夠在 PHP 中經過使用變量與常量來實現這一目標,在本章中咱們還會學習其它的一些概念。php
當解析一個文件時,PHP 會尋找起始和結束標記,也就是 <?php
和 ?>
,這告訴 PHP 開始和中止解析兩者之間的代碼。此種解析方式使得 PHP 能夠被嵌入到各類不一樣的文檔中去,而任何起始和結束標記以外的部分都會被 PHP 解析器忽略。程序員
若是文件內容是純 PHP 代碼,最好在文件末尾刪除 PHP 結束標記。這能夠避免在 PHP 結束標記以後萬一意外加入了空格或者換行符,會致使 PHP 開始輸出這些空白,而腳本中此時並沒有輸出的意圖。shell
PHP 支持 C,C++ 和 Unix Shell 風格(Perl 風格)的註釋。例如:編程
<?php echo "This is a test"; // 這是 C++ 風格的單行註釋 /* 這是一個 多行註釋 */ echo "This is yet another test"; echo 'One Final Test'; # 這是 shell 風格的單行註釋
註釋主要用做寫給程序讀者看的筆記。數組
C 風格的註釋在碰到第一個 */
時結束。要確保不要嵌套 C 風格的註釋。試圖註釋掉一大塊代碼時很容易出現該錯誤。編程語言
<?php /* echo "This is a test"; /* 這個註釋將要引發問題 */ */
你應該在你的程序中儘量多地使用有用的註釋:編輯器
代碼會告訴你怎麼作,註釋會告訴你爲什麼如此。學習
這樣作對你的程序的讀者來講很是有用,他們能夠很容易地理解你的程序是作什麼的。請記住,這我的能夠是六個月後的你!優化
常量是一個簡單值的標識符(名字)。如同其名稱所暗示的,在腳本執行期間該值不能改變。常量默認爲大小寫敏感。傳統上常量標識符老是大寫的。this
常量名和其它任何 PHP 標籤遵循一樣的命名規則。合法的常量名以字母或下劃線開始,後面跟着任何字母,數字或下劃線。
<?php // 合法的常量名 define("FOO", "something"); define("FOO2", "something else"); define("FOO_BAR", "something more"); // 非法的常量名 define("2FOO", "something"); // 下面的定義是合法的,但應該避免這樣作:(自定義常量不要以__開頭) // 也許未來有一天PHP會定義一個__FOO__的魔術常量 // 這樣就會與你的代碼相沖突 define("__FOO__", "something");
常量的範圍是全局的。不用管做用區域就能夠在腳本的任何地方訪問常量。
PHP 中的變量用一個美圓符號後面跟變量名來表示。變量名是區分大小寫的。
變量名與 PHP 中其它的標籤同樣遵循相同的規則。一個有效的變量名由字母或者下劃線開頭,後面跟上任意數量的字母,數字,或者下劃線。
<?php $var = 'Bob'; $Var = 'Joe'; echo "$var, $Var"; // 輸出 "Bob, Joe" $4site = 'not yet'; // 非法變量名;以數字開頭 $_4site = 'not yet'; // 合法變量名;如下劃線開頭 $i站點is = 'mansikka'; // 合法變量名;能夠用中文
變量默認老是傳值賦值。那也就是說,當將一個表達式的值賦予一個變量時,整個原始表達式的值被賦值到目標變量。
PHP 也提供了另一種方式給變量賦值:引用賦值。這意味着新的變量簡單的引用(換言之,「成爲其別名」 或者 「指向」)了原始變量。改動新的變量將影響到原始變量,反之亦然。
使用引用賦值,簡單地將一個 &
符號加到將要賦值的變量前(源變量)。例如,下列代碼片段將輸出「My name is Bob」兩次:
<?php $foo = 'Bob'; // 將 'Bob' 賦給 $foo $bar = &$foo; // 經過 $bar 引用 $foo $bar = "My name is $bar"; // 修改 $bar 變量 echo $bar; echo $foo; // $foo 的值也被修改
有一點重要事項必須指出,那就是隻有有名字的變量才能夠引用賦值。
PHP 支持 9 種原始數據類型。
四種標量類型:
三種複合類型:
兩種特殊類型:
這是最簡單的類型。boolean 表達了真值,能夠爲 TRUE 或 FALSE。
要指定一個布爾值,使用常量 TRUE 或 FALSE。兩個都不區分大小寫。
<?php $foo = True; // 設置 $foo 爲 TRUE
integer 是集合 ℤ = {..., -2, -1, 0, 1, 2, ...} 中的某個數。
整型值可使用十進制,十六進制,八進制或二進制表示,前面能夠加上可選的符號(- 或者 +)。
<?php $a = 1234; // 十進制數 $a = -123; // 負數 $a = 0123; // 八進制數 (等於十進制 83) $a = 0x1A; // 十六進制數 (等於十進制 26) $a = 0b11111111; // 二進制數字 (等於十進制 255)
浮點型(也叫浮點數 float,雙精度數 double 或實數 real)能夠用如下任一語法定義:
<?php $a = 1.234; $b = 1.2e3; $c = 7E-10;
一個字符串 string 就是由一系列的字符組成,其中每一個字符等同於一個字節。
定義一個字符串的最簡單的方法是用單引號把它包圍起來(字符 ')。
<?php echo 'this is a simple string';
若是字符串是包圍在雙引號(")中, PHP 將對一些特殊的字符進行解析,如 \n
換行,\t
水平製表符等。另外最重要的特徵是變量會被解析。
第三種表達字符串的方法是用 heredoc 句法結構:<<<
。
<?php $str = <<<EOD Example of string spanning multiple lines using heredoc syntax. EOD;
PHP 中的數組其實是一個有序映射。映射是一種把 values 關聯到 keys 的類型。此類型在不少方面作了優化,所以能夠把它當成真正的數組,或列表(向量),散列表(是映射的一種實現),字典,集合,棧,隊列以及更多可能性。
<?php $array = array( "foo" => "bar", "bar" => "foo", ); // 自 PHP 5.4 起 $array = [ "foo" => "bar", "bar" => "foo", ];
key 能夠是 integer 或者 string。value 能夠是任意類型。能夠不指定鍵名,或者對某些單元指定鍵名。
數組單元能夠經過 array[key] 語法來訪問。
<?php $array = array( "foo" => "bar", 42 => 24, "multi" => array( "dimensional" => array( "array" => "foo" ) ) ); var_dump($array["foo"]); var_dump($array[42]); var_dump($array["multi"]["dimensional"]["array"]);
要建立一個新的對象 object,使用 new 語句實例化一個類:
<?php class foo { function do_foo() { echo "Doing foo."; } } $bar = new foo; $bar->do_foo();
接下來咱們將看見如何使用變量與常量。你須要保存如下案例並嘗試運行程序。
從今之後,保存和運行 PHP 程序的標準步驟以下:
php program.php
來運行程序。輸入並運行如下程序:
<?php # 文件名:var.py $i = 5; echo $i . "\n"; $i = $i + 1; print $i . "\n"; $s = <<<EOT This is a multi-line string. This is the second line. EOT; print $s;
輸出:
5 6 This is a multi-line string. This is the second line.
下面是這一程序的工做原理。首先,咱們使用賦值運算符(=
)將常量數值 5
賦值給變量 $i
。這一行被稱之爲聲明語句(Statement)由於其工做正是聲明一些在這一狀況下應當完成的事情:咱們將變量名 $i
與值 5
相鏈接。而後,咱們經過 echo
語句來打印變量 $i
所聲明的內容,這並不奇怪,只是將變量的值打印到屏幕上。這裏咱們同時打印了 \n
是爲了換行。
接着,咱們將 1
加到 $i
變量所存儲的值中,並將得出的結果從新存儲進這一變量。而後咱們將這一變量打印出來,並指望獲得的值應爲 6
。
相似地,咱們將文本賦值給變量 $s
,並將其打印出來。
針對靜態編程語言程序員的提示變量只需被賦予某一值。不須要聲明或定義數據類型。
所謂物理行(Physical Line)是你在編寫程序時你所看到的內容。所謂邏輯行(Logical Line)是 PHP 所看到 的單個語句。PHP 以 ;
做爲不一樣邏輯行的結束與分隔。
PHP 鼓勵每一行使用一句獨立語句從而使得代碼更加可讀。
若是你有一行很是長的代碼,你能夠經過使用反斜槓將其拆分紅多個物理行。
$s = 'This is a string. \ This continues the string.'; echo $s;
輸出:
This is a string. This continues the string.
空白區在各行的開頭,這被稱做縮進(Indentation)。在邏輯行的開頭留下空白區(使用空格或製表符)用以肯定各邏輯行的縮進級別,然後者又可用於肯定語句的分組。
這意味着放置在一塊兒的語句擁有相同的縮進。每一組這樣的語句被稱爲塊(block)。
如何縮進使用四個空格來縮進。好的編輯器會自動爲你完成這一工做。請確保你在縮進中使用數量一致的空格。
如今咱們已經瞭解了諸多本質性的細節,咱們能夠前去了解控制流語句等更多更加有趣的東西。記得必定要充分理解你在本章所閱讀的內容。