PHP學習筆記(1)–基礎知識篇

耕耘實錄發表於2011-11-11

 

PHP學習筆記(1)(每天進步一點點)

 

1. 基本的 PHP 語法

示例程式碼:

<html>

<body>

<?php

echo “Hello World”;

?>

</body>

</html>

PHP 中的每個程式碼行都必須以分號結束。分號是一種分隔符,用於把指令集區分開來。

有兩種通過 PHP 來輸出文字的基礎指令:echo 和 print。在上面的例子中,我們使用了 echo 語句來輸出文字 “Hello World”。

2. PHP 中的變數

變數用於儲存值,比如數字、文字字串或陣列。

一旦設定了某個變數,我們就可以在指令碼中重複地使用它。

PHP 中的所有變數都是以 $ 符號開始的。

在 PHP 中設定變數的正確方法是:

例:$var_name = value;

3.  並置運算子(Concatenation Operator)

在 PHP 中,只有一個字串運算子。

並置運算子 (.) 用於把兩個字串值連線起來。

要把兩個變數連線在一起,請使用這個點運算子 (.) :

<?php

$txt1=”Hello World”;

$txt2=”1234″;

echo $txt1 . ” ” . $txt2;

?>

以上程式碼的輸出:

Hello World 1234您可以看到,我們在上面的例子中使用了兩次並置運算子。這是由於我們需要插入第三個字串。

為了分隔這兩個變數,我們在 $txt1 與 $txt2 之間插入了一個空格。

4.使用 strpos() 函式

strpos() 函式用於在字串內檢索一段字串或一個字元。

如果在字串中找到匹配,該函式會返回第一個匹配的位置。如果未找到匹配,則返回 FALSE。

 

讓我們試一下,是不是能在字串中找到子字串 “world”:

<?php

echo strpos(“Hello world!”,”world”);

?>

以上程式碼的輸出是:

6

正如您看到的,在我們的字串中,字串 “world” 的位置是 6。返回 6 而不是 7,是由於字串中的首個位置的 0,而不是 1。

5. 數值陣列

數值陣列儲存的每個元素都帶有一個數字 ID 鍵。

可以使用不同的方法來建立數值陣列:

例子 1

在這個例子中,會自動分配 ID 鍵:

$names = array(“Peter”,”Quagmire”,”Joe”);

例子 2

在這個例子中,我們人工分配的 ID 鍵:

$names[0] = “Peter”;

$names[1] = “Quagmire”;

$names[2] = “Joe”;

可以在指令碼中使用這些 ID 鍵:

<?php

$names[0] = “Peter”;

$names[1] = “Quagmire”;

$names[2] = “Joe”;

echo $names[1] . ” and ” . $names[2] . ” are “. $names[0] . “`s neighbors”;

?>

以上程式碼的輸出:

Quagmire and Joe are Peter`s neighbors

6. 多維陣列

在多維陣列中,主陣列中的每個元素也是一個陣列。在子陣列中的每個元素也可以是陣列,以此類推。

 

例子 1

在本例中,我們建立了一個帶有自動分配的 ID 鍵的多維陣列:

 

$families = array

(

  “Griffin”=>array

  (

  “Peter”,

  “Lois”,

  “Megan”

  ),

  “Quagmire”=>array

  (

  “Glenn”

  ),

  “Brown”=>array

  (

  “Cleveland”,

  “Loretta”,

  “Junior”

  )

);

如果輸出這個陣列的話,應該類似這樣:

Array

(

[Griffin] => Array

  (

  [0] => Peter

  [1] => Lois

  [2] => Megan

  )

[Quagmire] => Array

  (

  [0] => Glenn

  )

[Brown] => Array

  (

  [0] => Cleveland

  [1] => Loretta

  [2] => Junior

  )

)

例子 2

讓我們試著顯示上面的陣列中的一個單一的值:

echo “Is ” . $families[`Griffin`][2] .

” a part of the Griffin family?”;

以上程式碼的輸出:

Is Megan a part of the Griffin family?

7. 建立 PHP 函式

1)    所有的函式都使用關鍵詞 “function()” 來開始

2)    命名函式 – 函式的名稱應該提示出它的功能。函式名稱以字母或下劃線開頭。

3)    新增 “{” – 開口的花括號之後的部分是函式的程式碼。

4)    插入函式程式碼

5)    新增一個 “}” – 函式通過關閉花括號來結束。

例子

一個簡單的函式,在其被呼叫時能輸出我的名稱的:

<html>

<body>

<?php

function writeMyName()

  {

  echo “David Yang”;

  }

 

writeMyName();

?>

</body>

</html>

8. 使用 PHP 函式

現在,我們要在 PHP 指令碼中使用這個函式了:

<html>

<body>

<?php

function writeMyName()

  {

  echo “David Yang”;

  }

echo “Hello world!<br />”;

echo “My name is “;

writeMyName();

echo “.<br />That`s right, “;

writeMyName();

echo ” is my name.”;

?>

</body>

</html>以上程式碼的輸出:

Hello world!

My name is David Yang.

That`s right, David Yang is my name.

9. PHP 函式 – 新增引數

我們的第一個函式是一個非常簡單的函式。它只能輸出一個靜態的字串。

通過可以新增引數,我們向函式新增更多的功能。引數類似一個變數。

您可能注意到了,函式名稱後面有一個括號,比如 writeMyName()。引數就是在括號中規定的。

例子 1

下面的例子講輸出不同的名字,但姓是相同的:

<html>

<body>

<?php

function writeMyName($fname)

  {

  echo $fname . ” Yang.<br />”;

  }

echo “My name is “;

writeMyName(“David”);

echo “My name is “;

writeMyName(“Mike”);

echo “My name is “;

writeMyName(“John”);

?>

</body>

</html>

上面的程式碼的輸出:

My name is David Yang.

My name is Mike Yang.

My name is John Yang.

例子 2

下面的函式有兩個引數:

 

<html>

<body>

<?php

function writeMyName($fname,$punctuation)

  {

  echo $fname . ” Yang” . $punctuation . “<br />”;

  }

echo “My name is “;

writeMyName(“David”,”.”);

echo “My name is “;

writeMyName(“Mike”,”!”);

echo “My name is “;

writeMyName(“John”,”…”);

?>

</body>

</html>上面的程式碼的輸出:

My name is David Yang.

My name is Mike Yang!

My name is John Yang…

10. PHP 函式 – 返回值

函式也能用於返回值。

例子

<html>

<body>

<?php

function add($x,$y)

  {

  $total = $x + $y;

  return $total;

  }

echo “1 + 16 = ” . add(1,16);

?>

</body>

</html>

以上程式碼的輸出:

1 + 16 = 17

11.PHP 表單處理

表單例項:

<html>

<body>

<form action=”welcome.php” method=”post”>

Name: <input type=”text” name=”name” />

Age: <input type=”text” name=”age” />

<input type=”submit” />

</form>

</body>

</html>

上面的 HTML 頁面例項包含了兩個輸入框和一個提交按鈕。當使用者填寫該表單並單擊提交按鈕時,表單的資料會被送往 “welcome.php” 這個檔案。

“welcome.php” 檔案類似這樣:

<html>

<body>

Welcome <?php echo $_POST[“name”]; ?>.<br />

You are <?php echo $_POST[“age”]; ?> years old.

</body>

</html>

上面這個指令碼的輸出樣本類似這樣:

Welcome John.

You are 28 years old.

12.表單驗證

應該在任何可能的時候對使用者輸入進行驗證。客戶端的驗證速度更快,並且可以減輕伺服器的負載。

不過,任何流量很高以至於不得不擔心伺服器資源的站點,也有必要擔心站點的安全性。如果表單訪問的是資料庫,就非常有必要採用伺服器端的驗證。

在伺服器驗證表單的一種好的方式是,把表單傳給它自己,而不是跳轉到不同的頁面。這樣使用者就可以在同一張表單頁面得到錯誤資訊。使用者也就更容易發現錯誤了。

$_GET 變數

$_GET 變數是一個陣列,內容是由 HTTP GET 方法傳送的變數名稱和值。

$_GET 變數用於收集來自 method=”get” 的表單中的值。從帶有 GET 方法的表單傳送的資訊,對任何人都是可見的(會顯示在瀏覽器的位址列),並且對傳送的資訊量也有限制(最多 100 個字元)。

例子

<form action=”welcome.php” method=”get”>

Name: <input type=”text” name=”name” />

Age: <input type=”text” name=”age” />

<input type=”submit” />

</form>當使用者點選提交按鈕時,傳送的 URL 會類似這樣:

http://www.w3school.com.cn/welcome.php?name=Peter&age=37″welcome.php” 檔案現在可以通過 $_GET 變數來獲取表單資料了(請注意,表單域的名稱會自動成為 $_GET 陣列中的 ID 鍵):

Welcome <?php echo $_GET[“name”]; ?>.<br />

You are <?php echo $_GET[“age”]; ?> years old!

$_REQUEST 變數

PHP 的 $_REQUEST 變數包含了 $_GET, $_POST 以及 $_COOKIE 的內容。PHP 的 $_REQUEST 變數可用來取得通過 GET 和 POST 方法傳送的表單資料的結果。

例子

Welcome <?php echo $_REQUEST["name"]; ?>.<br />
You are <?php echo $_REQUEST["age"]; ?> years old!

$_POST 變數用於收集來自 method=”post” 的表單中的值。

$_POST 變數

$_POST 變數是一個陣列,內容是由 HTTP POST 方法傳送的變數名稱和值。

$_POST 變數用於收集來自 method=”post” 的表單中的值。從帶有 POST 方法的表單傳送的資訊,對任何人都是不可見的(不會顯示在瀏覽器的位址列),並且對傳送資訊的量也沒有限制。

例子
<form action="welcome.php" method="post">
Enter your name: <input type="text" name="name" />
Enter your age: <input type="text" name="age" />
<input type="submit" />
</form>

當使用者點選提交按鈕,URL 不會含有任何表單資料,看上去類似這樣:

http://www.w3school.com.cn/welcome.php

“welcome.php” 檔案現在可以通過 $_POST 變數來獲取表單資料了(請注意,表單域的名稱會自動成為 $_POST 陣列中的 ID 鍵):

Welcome <?php echo $_POST["name"]; ?>.<br />
You are <?php echo $_POST["age"]; ?> years old!
為什麼使用 $_POST?

· 通過 HTTP POST 傳送的變數不會顯示在 URL 中。

· 變數沒有長度限制。

不過,由於變數不顯示在 URL 中,所有無法把頁面加入書籤。

(本文僅供個人複習參考之用,無其他目的)


相關文章