<? 和 ?>
,但不鼓勵使用。只有通過激活 php.ini 中的 short_open_tag 配置指令或者在編譯 PHP 時使用了配置選項 –enable-short-tags 時才能使用短標記。如果文件內容是純 PHP 代碼,最好在文件末尾刪除 PHP 結束標記。這可以避免在 PHP 結束標記之后萬一意外加入了空格或者換行符,會導致 PHP 開始輸出這些空白,而腳本中此時并無輸出的意圖??梢栽?PHP 中使用四對不同的開始和結束標記。其中兩種,<?php ?>
和 <script language="php"> </script>
總是可用的。另兩種是短標記和 asp 風格標記,可以在 php.ini 配置文件中打開或關閉。盡管有些人覺得短標記和 ASP 風格標記很方便,但移植性較差,通常不推薦使用。 Note: 此外注意如果將 PHP 嵌入到 xml 或 XHTML 中則需要使用 <?php ?>
標記以保持符合標準。如果想查看某個表達式的值和類型,用 var_dump()
函數。 如果只是想得到一個易讀懂的類型的表達方式用于調試,用 gettype()
函數。要查看某個類型,不要用gettype()
,而用 is_type
函數。以下是一些范例:<?php$a_bool = TRUE; // a boolean$a_str = "foo"; // a string$a_str2 = 'foo'; // a string$an_int = 12; // an integerecho gettype($a_bool); // PRints out: booleanecho gettype($a_str); // prints out: string// If this is an integer, increment it by fourif (is_int($an_int)) { $an_int += 4;}// If $bool is a string, print it out// (does not print out anything)if (is_string($a_bool)) { echo "String: $a_bool";}?>如果要將一個變量強制轉換為某類型,可以對其使用強制轉換或者settype()
函數。通常運算符所返回的 boolean 值結果會被傳遞給控制流程。要明確地將一個值轉換成 boolean,用 (bool) 或者 (boolean) 來強制轉換。但是很多情況下不需要用強制轉換,因為當運算符,函數或者流程控制結構需要一個 boolean 參數時,該值會被自動轉換-1 和其它非零值(不論正負)一樣,被認為是 TRUE!var_dump((bool) ""); // bool(false)var_dump((bool) 1); // bool(true)var_dump((bool) -1); // bool(true)var_dump((bool) "foo"); // bool(true)var_dump((bool) 2.3e5); // bool(true)var_dump((bool) array(12)); // bool(true)var_dump((bool) array()); // bool(false)var_dump((bool) "false"); // bool(true)結果
bool(false)bool(true)bool(true)bool(true)bool(true)bool(true)bool(false)bool(true)一個 integer 是集合 ? = {…, -2, -1, 0, 1, 2, …} 中的一個數。GMP for PHP 和 GMP函數$a = 1234; // 十進制數$a = -123; // 負數$a = 0123; // 八進制數 (等于十進制 83)$a = 0x1A; // 十六進制數 (等于十進制 26)如果給定的一個數超出了 integer 的范圍,將會被解釋為 float。同樣如果執行的運算結果超出了 integer 范圍,也會返回 float。 下面是32位的溢出$large_number = 2147483647;var_dump($large_number); // int(2147483647)$large_number = 2147483648;var_dump($large_number); // float(2147483648)$million = 1000000;$large_number = 50000 * $million;var_dump($large_number); // float(50000000000)int(2147483647)double(2147483648)double(50000000000)64位的溢出
$large_number = 9223372036854775807;var_dump($large_number); // int(9223372036854775807)$large_number = 9223372036854775808;var_dump($large_number); // float(9.2233720368548E+18)$million = 1000000;$large_number = 50000000000000 * $million;var_dump($large_number); // float(5.0E+19)double(9.2233720368548E+18)double(9.2233720368548E+18)double(5.0E+19)PHP 中沒有整除的運算符。1/2 產生出 float 0.5。值可以舍棄小數部分強制轉換為 integer,或者使用 round() 函數可以更好地進行四舍五入。var_dump(25/7); // float(3.5714285714286)var_dump((int) (25/7)); // int(3)var_dump(round(25/7)); // double(4)永遠不要相信浮點數結果精確到了最后一位,也永遠不要比較兩個浮點數是否相等。如果確實需要更高的精度,應該使用任意精度數學函數或者gmp 函數 。某些數學運算會產生一個由常量 NAN 所代表的結果。此結果代表著一個在浮點數運算中未定義或不可表述的值。任何拿此值與其它任何值進行的松散或嚴格比較的結果都是 FALSE。由于 NAN 代表著任何不同值,不應拿 NAN 去和其它值進行比較,包括其自身,應該用 is_nan() 來檢查。Heredoc 結構 第三種表達字符串的方法是用 heredoc 句法結構:<<<。在該運算符之后要提供一個標識符,然后換行。接下來是字符串 string 本身,最后要用前面定義的標識符作為結束標志。 結束時所引用的標識符必須在該行的第一列,而且,標識符的命名也要像其它標簽一樣遵守 PHP 的規則:只能包含字母、數字和下劃線,并且必須以字母和下劃線作為開頭。<?php/** * Created by Zoe. * User: Administrator * Date: 2017/2/8 * Time: 9:16 */$str = <<<EODExample of stringspanning multiple linesusing heredoc syntax.EOD;/* 含有變量的更復雜示例 */class foo{ var $foo; var $bar; function foo() { $this->foo = 'Foods'; $this->bar = array('apple', 'strawberry', 'watermelon'); }}$foo = new foo();$name = 'Zoe';echo <<<EOTMy name is "$name". I am printing some $foo->foo.Now, I am printing some {$foo->bar[1]}.This should print a capital 'A': /x41EOT;My name is "Zoe". I am printing some Foods.Now, I am printing some strawberry.This should print a capital 'A': AProcess finished with exit code 0數組 <?php$array = array( "foo" => "bar", "bar" => "foo",);// 自 PHP 5.4 起$array = [ "foo" => "bar", "bar" => "foo",];?>如果在數組定義中多個單元都使用了同一個鍵名,則只使用了最后一個,之前的都被覆蓋了。PHP 數組可以同時含有 integer 和 string 類型的鍵名,因為 PHP 實際并不區分索引數組和關聯數組。數組單元可以通過 array[key] 語法來訪問。方括號和花括號可以互換使用來訪問數組單元(例如"$foo[bar]" 是合法的(“合法”的原文為 valid。在實際測試中,這么做確實可以訪問數組的該元素,但是會報一個常量未定義的 notice。無論如何,強烈建議不要使用 $foo[bar]
這樣的寫法,而要使用 $foo[‘bar’] 來訪問數組中元素。–haohappy 注)。至于為什么參見以上的例子和字符串中的變量解析中的解釋.可以用 array_diff() 和數組運算符來比較數組。新聞熱點
疑難解答
圖片精選