第 5 章 PHP 的組成部分
5.1 變量
一個變量由你所選取的一個名字以及前面的一個美元符($)組成。
一個分號(;
)(又叫做指令終止符软舌,instruction terminator)用來結(jié)束一條 PHP 語句。
注意:每一條語句都要以分號結(jié)束,不然會報錯。
5.1.2 超全局變量
預(yù)定義變量 http://php.net/manual/en/reserved.variables.php
在腳本中使用超全局變量對于創(chuàng)建安全的應(yīng)用程序很重要棵譬,因為超全局變量減少了用戶注入式攻擊進(jìn)入到腳本的可能性。
5.2 數(shù)據(jù)類型
PHP 是類型寬松的語言预伺,這意味著它將在數(shù)據(jù)被賦給每個變量的時候才確定數(shù)據(jù)類型订咸。
程序清單 5.1 測試一個變量的類型
<?php
$testing;
echo "is null? ".is_null($testing);
echo "<br/>";
$testing = 5;
echo "is an integer? ".is_int($testing);
echo "<br/>";
$testing = "five";
echo "is a string? ".is_string($testing);
echo "<br/>";
$testing = 5.024;
echo "is a double? ".is_double($testing);
echo "<br/>";
$testing = true;
echo "is boolean? ".is_bool($testing);
echo "<br/>";
$testing = array('apple', 'orange', 'pear');
echo "is an array? ".is_array($testing);
echo "<br/>";
echo "is numeric? ".is_numeric($testing);
echo "<br/>";
?>
結(jié)果:
is null? 1
is an integer? 1
is a string? 1
is a double? 1
is boolean? 1
is an array? 1
is numeric?
5.2.1 使用 settype()
來改變變量的數(shù)據(jù)類型
程序清單 5.2 使用 settype()
修改一個變量的類型
<?php
$undecided = 3.14;
echo "is ".$undecided." a double? ".is_double($undecided)."<br/>";
settype($undecided, 'string');
echo "is ".$undecided." a string? ".is_string($undecided)."<br/>";
settype($undecided, 'integer');
echo "is ".$undecided." an integer? ".is_integer($undecided)."<br/>";
settype($undecided, 'double');
echo "is ".$undecided." a double? ".is_double($undecided)."<br/>";
settype($undecided, 'bool');
echo "is ".$undecided." a boolean? ".is_bool($undecided)."<br/>";
?>
結(jié)果:
is 3.14 a double? 1
is 3.14 a string? 1
is 3 an integer? 1
is 3 a double? 1
is 1 a boolean? 1
5.2.2 通過類型轉(zhuǎn)換改變變量的數(shù)據(jù)類型
使用 settype()
來改變一個已有變量的類型和使用類型轉(zhuǎn)換改變變量類型的主要區(qū)別在于,類型轉(zhuǎn)換會生成一個拷貝酬诀,而保持原來的變量不動脏嚷。
程序清單 5.3 對一個變量進(jìn)行類型轉(zhuǎn)換
<?php
$undecided = 3.14;
$holder = (double)$undecided;
echo "is ".$holder." a double? ".is_double($holder)."<br/>";
$holder = (string)$undecided;
echo "is ".$holder." a string? ".is_string($holder)."<br/>";
$holder = (integer)$undecided;
echo "is ".$holder." an integer? ".is_integer($holder)."<br/>";
$holder = (double)$undecided;
echo "is ".$holder." a double? ".is_double($holder)."<br/>";
$holder = (boolean)$undecided;
echo "is ".$holder." a boolean? ".is_bool($holder)."<br/>";
$holder = (integer)$undecided;
echo "is ".$holder." an integer? ".is_integer($holder)."<br/>";
echo "<hr/>";
echo "original variable type of $undecided: ";
echo gettype($undecided);
?>
結(jié)果:
is 3.14 a double? 1
is 3.14 a string? 1
is 3 an integer? 1
is 3.14 a double? 1
is 1 a boolean? 1
is 3 an integer? 1
original variable type of 3.14: double
5.3 操作符和表達(dá)式
5.3.3 連接操作符
連接操作符用一個句點(.
)表示。它把兩個操作數(shù)都當(dāng)做是字符串瞒御,把右操作數(shù)附加到左操作數(shù)上父叙。如
"hello"." world"
返回
hello world
不管和連接操作符一起使用的操作數(shù)是什么數(shù)據(jù)類型,它們都會被當(dāng)做字符串對待,并且結(jié)果也總是字符串類型趾唱。
5.4 常量
常量必須使用 PHP 內(nèi)建的 define()
函數(shù)來創(chuàng)建涌乳,隨后這個常量是不能改變的,除非再次明確地 define()
它甜癞。
常量只能使用常量名訪問夕晓,不需要美元符號。
程序清單 5.4 定義和訪問一個常量
<?php
define("THE_YEAR", "2012");
echo "It is the year ".THE_YEAR.".";
?>
結(jié)果:
It is the year 2012.
預(yù)定義常量 http://php.net/manual/en/language.constants.predefined.php