PHP 程式設計/基礎知識
此示例使用數學表示式中使用的五個基本 **運算子**。 這些是 PHP 中執行的所有數學和字串操作的基礎。
+ |
- |
* |
/ |
=
|
| 加 | 減 | 乘 | 除 | 賦值 |
五個數學運算子的功能與 C++ 和 Java 中的運算子完全相同
<?php
$x = 25;
$y = 10;
$z = $x + $y;
echo $z;
echo "<br />";
$z = $x/$y;
echo $z;
echo "<br />";
$z = $y*$y*$x;
echo $z - 1250;
echo "<br />";
?>
35<br />2.5<br />1250<br />
35 2.5 1250
echo "<br />";
352.51250
這當然不是預期結果。
有兩種程式碼選項執行與賦值 (=) 運算子相反的操作。 關鍵字 null 應用於變數置空,實際上是在賦值運算子 (=) 中使用它來代替值。 如果你想銷燬一個變數,可以使用 unset() 語言結構。
$variable = null;
或者
unset($variable);
除此之外,可以使用字母“e”引入 10 的冪
print 2e1; // 20
print 4e-3; // 0.004
數字格式化由 number_format() 實現:小數位數、小數點分隔符和千位分隔符。 例如
print number_format(3333.333333, 2, ',', ' '); // 3 333,33
此示例演示了連線運算子 (.),它將兩個字串連線在一起,生成一個包含兩個部分的字串。 它類似於 C++ 字串類 (見 STL)、Java、JavaScript、Python 實現中的加號 (+) 運算子。
$string = $string . " " . "All the cool kids are doing it.";
$string 的當前值(即“PHP 很棒且很棒。”)附加到文字字串“所有酷孩子都在做。”,並將此新字串分配給 $string。
<?php
$string = "PHP is wonderful and great.";
$string = $string . " " . "All the cool kids are doing it.";
echo $string;
?>
PHP is wonderful and great. All the cool kids are doing it.
眾所周知,或者對於那些剛接觸程式設計的人來說很快就會發現,程式設計師總是尋找“更緊湊的程式碼”。 簡而言之,我們以最少的按鍵完成最多的工作而自豪。 考慮到這一點,這裡有一個技巧可以節省寶貴的按鍵:同時連線和分配。 很容易。 讓我們以與上面相同的示例為例。
<?php
$string = "PHP is wonderful and great.";
$string .= " " . "All the cool kids are doing it.";
echo $string;
?>
PHP is wonderful and great. All the cool kids are doing it.
您只需使用完全相同的輸出即可節省 8 個按鍵。 沒什麼大不了的? 想象一下,我最近不得不使用 100 行模板程式碼來做。 是的,這很重要。 順便說一句,如果您在不更改輸出的情況下更改實現,則稱為重構。 熟悉這個詞。 你會經常用到它。 以下檢視更多複合賦值的示例。
此程式碼段演示了自引用快捷運算子。 第一個這樣的運算子是 ++ 運算子,它將 $x(使用字尾形式)遞增 1,使其值為 2。 遞增 $x 後,$y 被定義並分配了值 5。
第二個快捷運算子是 *=,它將 $y 賦值為 $y*$x 或 10。
在將 $z 初始化為 180 後,後續行執行兩個快捷操作。 根據運算順序(見下文手冊頁面),$y 被遞減(使用字首形式)併除以 $z。 $z 被分配給結果值 20。
<?php
$x = 1;
$x++;
echo $x . " ";
$y = 5;
$y *= $x;
echo $y . " ";
$z = 180;
$z /= --$y;
echo $z;
?>
2 10 20
<?php
$x = 1;
$x = $x + 1;
echo $x . " ";
$y = 5;
$y = $y*$x;
echo $y . " ";
$z = 180;
$y = $y - 1;
$z = $z/$y;
echo $z;
?>
運算子是指表示式中用來操作資料的符號。PHP 中有七個基本運算子:
=(賦值)+(加)-(減)*(乘)/(除)%(取模).(連線)
此外,每個運算子都可以與賦值操作組合使用,形成以下運算子:
+=(加法賦值)-=(減法賦值)*=(乘法賦值)/=(除法賦值)%=(取模賦值).=(連線賦值)
這些運算子用於將一個變數加上、減去、乘以或除以另一個值,然後將其賦值給自身。
$var = $var + 5;
與
$var += 5;
PHP 中還有增量和減量運算子。
++(增量)--(減量)
它們是加法和減法賦值運算子的特例。
$var = 0;
$var += 1;
echo "The incremented value is $var.\n";
$var -= 1;
echo "The decremented value is $var.\n";
The incremented value is 1. The decremented value is 0.
雖然這在 PHP 中是完全合法的,但對於像增量這樣的常見操作來說,它有點冗長。它可以很容易地用增量運算子替換,從而縮短語句。
$var = 3;
$var++;
echo "The incremented value is $var.\n";
$var--;
echo "The decremented value is $var.\n";
The incremented value is 4. The decremented value is 3.
要更深入地瞭解 PHP 的運算子,包括對位運算子的解釋,請參考下面的手冊連結。
優先順序決定了在語句中執行某些運算子的優先順序。如果一個運算子具有更高的優先順序,並不意味著它更重要;相反的情況經常發生。
- 結合性
當多個運算子出現且具有相同的優先順序(無論是同一個運算子的多個例項,還是隻是具有相同優先順序的不同運算子)時,考慮結合性就很重要:是向右(向左)、向左(向右)還是非結合性。
- 結合性無關緊要的示例
在某些情況下(如下面的示例所示),尤其是當存在相同的運算子時,結合性可能對結果沒有影響。
以下...
$a = 5*2*3*4; // Equals 120
...具有左結合性,等效於
$a = (((5*2)*3)*4); // Equals 120
但是,在這種情況下,右結合性會產生相同的結果。
$a = (5*(2*(3*4))); // Would also equal 120
- 結合性在 PHP 中相關(但在數學中不相關)的示例
在數學中,對於具有相同優先順序的運算子,可能認為按哪個方向執行計算無關緊要。
例如,以下...
$a = 5 + 3 - 2 + 8; // Equals 14
...等效於此(左結合)語句
$a = (((5 + 3) - 2) + 8); // Equals 14
而且,如果按照人類在數學計算中的慣例來考慮,以下等效的右結合表示式將產生相同的結果
$a = (5 + (3 + (-2 + 8))); // Would also equal 14
但是,由於我們處理的是一種線性計算機語言,它不知道將“2”轉換為負數並將其與“8”分組,然後將其加到“3”(然後加到“5”),因此如果 PHP 要以嚴格的右結合方式執行以下表達式,將會出現以下(錯誤的)結果
$a = (5 + (3 - (2 + 8))); // Would equal -2
因此,結合性是相關的,應該記住(儘管通常最好將分組顯式地說明出來——既可以避免錯誤,又可以提高程式碼的可讀性,方便其他人檢視程式碼)。
類似的問題發生在乘法和除法上。儘管按照人類的慣例,所有相鄰的乘法和除法組都將在分子級別進行乘法運算,在分母級別進行除法運算,但 PHP 直譯器不知道這樣做,因此它將設定左(向右)約定,除非已進行顯式分組(透過括號——具有最高優先順序)。
$a = 5*4/2*3; // Equals 30
這等效於左結合的
$a = (((5*4)/2)*3); // Also equals 30
但是,與上面的加法/減法示例一樣,以右結合性(嚴格的線性反向方式)執行此操作不會產生相同(預期的)結果
$a = (5*(4/(2*3))); // Equals 3.33333
下面的兩個示例都使用 **換行符**(\n、\r\n 或 \r,基於作業系統)來表示當前行的結束和新行的開始。
注意:在 echo 語句中,字串中出現 \n 的地方,輸出中就會出現換行。但是,當在 Web 瀏覽器中顯示 HTML 文件時,\n 不會產生換行符。這是因為 PHP 引擎不會渲染指令碼。相反,PHP 引擎輸出 HTML 程式碼,隨後由 Web 瀏覽器渲染。PHP 指令碼中的換行符 \n 將變為 HTML 空格,Web 瀏覽器在渲染時會跳過空格(就像 PHP 引擎在生成 HTML 時會跳過 PHP 指令碼中的空格一樣)。這並不意味著 \n 運算子沒有用;它可以用來在 HTML 中新增空格,因此如果有人檢視 PHP 指令碼生成的 HTML,他們會更容易閱讀。
要插入 Web 瀏覽器將渲染的換行符,必須使用 <br /> 標籤來換行。
注意:換行符對於 Linux/Unix 系統是 \n,對於 Windows 是 \r\n,對於 Mac 是 \r(直到 1996 年,基於 Linux 的 MkLinux 上市)。
echo 'PHP is cool,<br />awesome<br />and great.';
nl2br() 函式可用於自動將字串中的換行符轉換為 <br /> 標籤。
$string = "This\ntext\nbreaks\nlines.";
$string = nl2br($string);
print $string;
This<br /> text<br /> breaks<br /> lines.
This text breaks lines.
其他特殊字元包括 ASCII NUL(\0)——用於填充二進位制檔案,**製表符**(\t)——用於顯示標準制表符,以及 return(\r)——表示回車。同樣,這些字元不會改變 HTML 的渲染,因為它們在 HTML 原始碼中新增空格。要使製表符和回車符在最終的網頁中渲染,應該使用 &tab; 表示製表符,使用 <br /> 表示回車。
PHP 有一個函式集用於獲取輸入。如果您使用的是標準輸入(例如來自命令列的輸入),則使用基本的輸入函式獲取它。
$mystring = fgets($stdin);
或者
$stdin = fopen('php://stdin', 'r'); // opens standard input
$line = fgets($stdin); // reads until user presses ENTER
在 Web 伺服器上,傳送到 PHP 應用程式的資訊可能是 GET 操作或 POST 操作。
對於 GET 操作,引數透過位址列傳送。位址列中的引數可以透過訪問 $_GET['parameter'] 獲取。對於 POST 操作,提交的輸入可以透過 $_POST['parameter'] 訪問。
一個更通用的陣列 $_REQUEST['parameter'] 包含 $_GET、$_POST 和 $_COOKIE 的內容。