W3C之PHP基礎篇

akbarken發表於2013-11-02

PHP 是一種建立動態互動性站點的強有力的伺服器端指令碼語言。

PHP 檔案可包含文字、HTML 標籤以及腳。PHP 檔案中的指令碼可在伺服器上執行。

什麼是 PHP?

PHP:  超文字前處理器,伺服器指令碼語言,在伺服器上執行,開源,支援多種資料庫

PHP檔案:

1、可包含文字、HTML 標籤以及指令碼

2、向瀏覽器返回純粹的 HTML

3、檔案字尾是 ".php"、".php3" 或 ".phtml"

PHP語法:

PHP 的指令碼塊以 <?php 開始,以 ?> 結束。您可以把 PHP 的指令碼塊放置在文件中的任何位置。

<?php

?>

向瀏覽器輸出文字 "Hello World":

<html>
<body>

<?php
echo "Hello World";
?>

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

有兩種通過 PHP 來輸出文字的基礎指令:echo 和 print

PHP 中的註釋

<html>
<body>
<?php
//This is a comment
/*
This is
a comment
block
*/
?>
</body>
</html>

PHP 中的變數

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

2.所有變數都是以 $ 符號開始的。

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

$var_name = value;

建立一個存有字串的變數,和一個存有數值的變數:

<?php
$txt = "Hello World!";
$number = 16;
?>

PHP 是一門鬆散型別的語言

變數使用前不需要宣告資料型別

變數的命名規則

  • 變數名必須以字母或下劃線 "_" 開頭
  • 變數名只能包含字母數字字元以及下劃線
  • 變數名不能包含空格。如果變數名由多個單片語成,那麼應該使用下劃線進行分隔(比如 $my_string),或者以大寫字母開頭(比如 $myString)。
字串變數用於儲存並處理文字片段。

PHP 中的字串

字串變數用於包含字串的值。

PHP 指令碼把字串 "Hello World" 賦值給名為 $txt 的字串變數:

<?php
$txt="Hello World";
echo $txt;
?>

以上程式碼的輸出:

Hello World

並置運算子

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

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

<?php
$txt1="Hello World";
$txt2="1234";
echo $txt1 . " " . $txt2;
?>

以上程式碼的輸出:

Hello World 1234

使用 strlen() 函式

strlen() 函式用於計算字串的長度。

算出字串 "Hello world!" 的長度:

<?php
echo strlen("Hello world!");
?>

以上程式碼的輸出:

12

使用 strpos() 函式

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

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

<?php
echo strpos("Hello world!","world");
?> 

以上程式碼的輸出是:

6

PHP 運算子

運算子用於對值進行運算.

算數運算子

運算子 說明 例子 結果
+ Addition x=2
x+2
4
- Subtraction x=2
5-x
3
* Multiplication x=4
x*5
20
/ Division 15/5
5/2
3
2.5
% Modulus (division remainder) 5%2
10%8
10%2
1
2
0
++ Increment x=5
x++
x=6
-- Decrement x=5
x--
x=4

賦值運算子

運算子 說明 例子
= x=y x=y
+= x+=y x=x+y
-= x-=y x=x-y
*= x*=y x=x*y
/= x/=y x=x/y
.= x.=y x=x.y
%= x%=y x=x%y

比較運算子

運算子 說明 例子
== is equal to 5==8 returns false
!= is not equal 5!=8 returns true
> is greater than 5>8 returns false
< is less than 5<8 returns true
>= is greater than or equal to 5>=8 returns false
<= is less than or equal to 5<=8 returns true

邏輯運算子

運算子 說明 例子
&& and x=6
y=3

(x < 10 && y > 1) returns true

|| or x=6
y=3

(x==5 || y==5) returns false

! not x=6
y=3

!(x==y) returns true


if、elseif 以及 else 語句用於執行基於不同條件的不同動作。

如果當前日期是週五,下面的程式碼將輸出 "Have a nice weekend!",否則會輸出 "Have a nice day!":

<html>
<body>

<?php
$d=date("D");
if ($d=="Fri"){
  echo "Have a nice weekend!"; }
else
  echo "Have a nice day!"; 
?>

</body>
</html>

ElseIf 語句

例項

如果當前日期是週五,下面的例子會輸出 "Have a nice weekend!",如果是週日,則輸出 "Have a nice Sunday!",否則輸出 "Have a nice day!":

<html>
<body>

<?php
$d=date("D");
if ($d=="Fri")
  echo "Have a nice weekend!"; 
elseif ($d=="Sun")
  echo "Have a nice Sunday!"; 
else
  echo "Have a nice day!"; 
?>

</body>
</html
PHP 中的 Switch 語句用於執行基於多個不同條件的不同動作。

<?php
switch ($x)
{
case 1:
  echo "Number 1";
  break;
case 2:
  echo "Number 2";
  break;
case 3:
  echo "Number 3";
  break;
default:
  echo "No number between 1 and 3";
}
?>

</body>
</html>
PHP陣列

陣列能夠在單獨的變數名中儲存一個或多個值。

有三種陣列型別:

數值陣列
帶有數字 ID 鍵的陣列
關聯陣列
陣列中的每個 ID 鍵關聯一個值
多維陣列
包含一個或多個陣列的陣列


數值陣列

數值陣列儲存的每個元素都帶有一個數字 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

關聯陣列

例子 1

在本例中,我們使用一個陣列把年齡分配給不同的人:

$ages = array("Peter"=>32, "Quagmire"=>30, "Joe"=>34);

例子 2

本例與例子 1 相同,不過展示了另一種建立陣列的方法:

$ages['Peter'] = "32";
$ages['Quagmire'] = "30";
$ages['Joe'] = "34";

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

<?php

$ages['Peter'] = "32";
$ages['Quagmire'] = "30";
$ages['Joe'] = "34";

echo "Peter is " . $ages['Peter'] . " years old.";
?>

以上指令碼的輸出:

Peter is 32 years old.

多維陣列

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

例子 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?

PHP 中的迴圈語句用於執行相同的程式碼塊指定的次數。

迴圈:while,  for, foreach, do...while

while語句

例子

下面的例子示範了一個迴圈,只要變數 i 小於或等於 5,程式碼就會一直迴圈執行下去。迴圈每迴圈一次,變數就會遞增 1:

<?php 
$i=1;
while($i<=5)
  {
  echo "The number is " . $i . "<br />";
  $i++;
  }
?>

do...while 語句

<?php 
$i=0;
do
  {
  $i++;
  echo "The number is " . $i . "<br />";
  }
while ($i<5);
?>

for 語句

<?php
for ($i=1; $i<=5; $i++)
{
  echo "Hello World!<br />";
}
?>

foreach 語句

<?php
$arr=array("one", "two", "three");

foreach ($arr as $value)
{
  echo "Value: " . $value . "<br />";
}
?>
輸出:
Value:one 
Value:two 
Value:three 

PHP 函式

PHP 的真正威力源自於它的函式。在 PHP 中,提供了超過 700 個內建的函式。

例子

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

<?php
function writeMyName()
  {
  echo "David Yang";
  }

writeMyName();
?>

使用 PHP 函式

<?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.";
?>

以上程式碼的輸出:

Hello world!
My name is David Yang.
That's right, David Yang is my name.

PHP 函式 - 新增引數

例子 1

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

<?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");
?>

上面的程式碼的輸出:

My name is David Yang.
My name is Mike Yang.
My name is John Yang.

例子 2

下面的函式有兩個引數:

<?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","...");
?>

上面的程式碼的輸出:

My name is David Yang.
My name is Mike Yang!
My name is John Yang...

PHP 函式 - 返回值

例子

<?php
function add($x,$y)
  {
  $total = $x + $y;
  return $total;
  }

echo "1 + 16 = " . add(1,16);
?>

以上程式碼的輸出:

1 + 16 = 17

PHP 表單和使用者輸入

 $_GET 和 $_POST 用於檢索表單中的值,比如使用者輸入
表單例項:
<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>

"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.

$_GET 變數用於收集來自 method="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>

"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?

  • 通過 HTTP POST 傳送的變數不會顯示在 URL 中。
  • 變數沒有長度限制。



相關文章