Jollen 網路學院
|| Jollen 的 Embedded Linux 訓練方案 | Jollen 的 Embedded Linux 系列著作 ||
□ Jollen網路學院 >> PHP 讀者服務 >> PHP 線上教材 □

CH12: PHP 陣列

  • 如何使用陣列
  • scalar array 與 associative array
  • 多維陣列
  • 陣列的內部指標
  • PHP 陣列函數 - array()、count()、current()、list()、next()、pre()、reset()、key()

如何使用陣列

在 PHP 裡要使用陣列時,只要將變數進行「初始化」陣列時的程序即可。

範例:

$names[0] = "Jollen"
$names[1] = "Jordan"
$names[2] = "Kitty"
$names["howmany"] = 3;

scalar array 與 associative array

在上面的例子中,我們看到:

$names[3] = "Kitty"

是以 3 這個數值做索引,以數值做索引 (index, key) 的陣列稱為 scalar array。

另外一個例子:

$names["howmany"] = 3;

以字串做索引的陣列我們稱為 associative array。

多維陣列

多維陣列的初始化與一維陣列方法相同,例如:

$alpha[0][0] = "A";
$alpha[0][1] = "B";
$alpha[1][0] = "C";
$alpha[1][1] = "D";

這種寫法等於:

$alpha[0][] = "A";
$alpha[0][] = "B";
$alpha[1][] = "C";
$alpha[1][] = "D";

陣列的內部指標

PHP 裡的陣列事實上是利用資料結構中的雙向鍵結串列來維護的,因此我們可以利用 next() 與 pre() 函數將陣列的內部指標往前或往後一個元素。陣列裡的指標除了利用 PHP 提供的函數外,外界無法直接去改變陣列的內部指標。

PHP 陣列函數 - array()、count()、current()、list()、next()、pre()、reset()、key()

array()

用途:

建立一個陣列,依給定的參數 (語法) 傳回陣列。

範例:

$name = array("Jollen", "Paul", "Ketty");

相當於:

$name[0] = "Jollen";
$name[1] = "Paul";
$name[2] = "Ketty";

array() 亦可為用在巢狀式陣列:

$fruits = array(
   "fruits" => array("a"=>"orange","b"=>"banana","c"=>"apple"),
   "numbers" => array(1, 2, 3, 4, 5, 6),
   "holes" => array("first", 5 => "second", "third")
);

上面為建立一個二維陣列的範例。此例相當於:

$fruits["fruits"]["a"] = "orange";
$fruits["fruits"]["b"] = "banana";
$fruits["fruits"]["c"] = "apple";

$fruits["numbers"][0] = 1;
$fruits["numbers"][1] = 2;
$fruits["numbers"][2] = 3;
$fruits["numbers"][3] = 4;
$fruits["numbers"][4] = 5;
$fruits["numbers"][5] = 6;

$fruits["holes"][0] = "first";
$fruits["holes"][5] = "second";
$fruits["holes"][6] = "third";

array() 事實上並不是函數,而是 PHP 提供的一個語法。

count()

定義:

int count(mixed var);

用途:

傳回 var (通常為陣列) 的元素個數,非陣列的變數則只有一個元素。沒果沒有這個 var 變數,則傳回 0;如果 var 不是陣列,則傳回 1。

範例:

$names = array("jollen", "nick", "frank");

echo count($names);

輸出:

3

current()

定義:

mixed current(array array);

用途:

傳回目前陣列裡的指標所指元素的「值」。每一個陣列都有一個內部的指標,指向其中的一個元素。陣列的所有元素利用雙向串列連接,這個指標便指向目前的元素。一開始這個指標是指到陣列的第一個元素,利用其它函數存取陣列時,便會改變這個指標,current() 便是傳回目前所指的陣列元素的值,但不會改變這個指標的位置。

傳回指標指向陣列的範圍之外的位置,便傳回 false。有一種情況要特別小心,當元素的值為 0 或是空字串 "" 時,也會傳回 false,此時可改用 echo() 函數。

list()

list() 並不是一個 function,而是像 array() 一樣,屬於 PHP 的語法。list() 用來一次給定多個值給多個變數。

範例:

<table>
<tr>
<th>Employee name</th>
<th>Salary</th>
</tr>
<?php

$result = mysql($conn, "SELECT id, name, salary FROM employees");
while (list($id, $name, $salary) = mysql_fetch_row($result)) {
   print(" <tr>\n".
   " <td><a href=\"info.php3?id=$id\">$name</a></td>\n".
   " <td>$salary</td>\n".
   " </tr>\n");
}

?></table>

next()

定義:

mixed next(array array);

用途:

傳回下一個陣列指標所指的值,注意是先把指標往下移,再傳回值。如果元素的值是 0 或 "" (空字串),則傳回 false。當指標已指向陣列尾段,無法再往下移時,則傳回 false。

可利用 echo() 函數來觀察陣列中是否有 0 或 ""。

prev()

定義:

mixed prev(array array);

用途:

將陣列內部指標往前移前一位後,再傳回元素的值。

reset()

定義:

mixed reset(array array);

用途:將陣列的指標初始化,即移到第一個元素的位置,並且傳回第一個元素的值。

key()

定義:

mixed key(array array);

用途:

傳回目前 associative array 中的 key,即陣列內部指標所指元素位置的 key。

配合 reste()、next() 的綜合範例如下:

$fruits = array("d"=>"lemon","a"=>"orange","b"=>"banana","c"=>"apple");
arsort($fruits);
for(reset($fruits); $key = key($fruits); next($fruits)) {
   echo "fruits[$key] = ".$fruits[$key]."<br>";
}

輸出:

fruits[a] = orange
fruits[d] = lemon
fruits[b] = banana
fruits[c] = apple

迴圈由第一個元素開始拜訪所有的元素,到最後一個元素結束。

PHP 線上教材
· CH1: 什麼是 PHP
· CH2: PHP 的用途
· CH3: PHP 的優點
· CH4: Hello, world!
· CH5: 如何安裝 PHP
· CH6: PHP 入門觀念
· CH7: PHP 基本語法
· CH8: PHP 常數與變數
· CH9: PHP 函數設計
· CH10: PHP 運算元
· CH11: PHP Expression
· CH12: PHP 陣列
· CH13: PHP Class設計
· CH14: PHP 良好習慣
回首頁 |  TOP |
    Copyright (c) 2006 www.jollen.org
All rights reserved. 更新日期: 2006/04/11