跳轉至內容

PHP 程式設計/陣列

來自 Wikibooks,開放世界的開放書籍

陣列是在 PHP 指令碼中定義的一組資料。陣列可以在其內部包含其他陣列,沒有任何限制(因此可以構建多維陣列)。陣列可以被稱為表格或雜湊表。

陣列可以透過兩種方式建立。第一種涉及使用 array 函式。第二種涉及使用方括號。

array 函式方法

[編輯 | 編輯原始碼]

array 函式方法中,您按照以下方案建立陣列:

$foo = bar()

例如,要設定陣列使鍵為順序編號(例如:“0、1、2、3”),可以使用:

  $foobar = array($foo, $bar);

這將生成如下陣列:

  $foobar[0] = $foo;
  $foobar[1] = $bar;

也可以定義鍵值:

 $foobar = array('foo' => $foo, 'bar' => $bar);

這將設定如下陣列:

  $foobar['foo'] = $foo;
  $foobar['bar'] = $bar;

方括號方法

[編輯 | 編輯原始碼]

方括號方法允許您透過直接設定值來設定。例如,要使 $foobar[1] = $foo,您只需:

 $foobar[1] = $foo;

設定鍵值也一樣:

 $foobar['foo'] = $foo;

陣列示例

[編輯 | 編輯原始碼]

示例 #1

[編輯 | 編輯原始碼]
此示例設定並列印陣列。

PHP 程式碼:

<?php
  $array = array("name"=>"Toyota","type"=>"Celica","colour"=>"black","manufactured"=>"1991");
  $array2 = array("Toyota","Celica","black","1991");
  $array3 = array("name"=>"Toyota","Celica","colour"=>"black","1991");
  print_r($array);
  print_r($array2);
  print_r($array3);
?>

PHP 輸出:

  Array
  (
    [name] => Toyota
    [type] => Celica
    [colour] => black
    [manufactured] => 1991
  )
  Array
  (
    [0] => Toyota
    [1] => Celica
    [2] => black
    [3] => 1991
  )
  Array
  (
    [name] => Toyota
    [0] => Celica
    [colour] => black
    [1] => 1991
  )

HTML 渲染:

Array ( [name] => Toyota [type] => Celica [colour] => black [manufactured] => 1991 ) Array ( [0] => Toyota [1] => Celica [2] => black [3] => 1991 ) Array ( [name] => Toyota [0] => Celica [colour] => black [1] => 1991 )


示例 #2

[編輯 | 編輯原始碼]

以下示例將輸出與示例 #1相同的文字。

<?php
  $array['name'] = "Toyota";
  $array['type'] = "Celica";
  $array['colour'] = "black";
  $array['manufactured'] = "1991";

  $array2[] = "Toyota";
  $array2[] = "Celica";
  $array2[] = "black";
  $array2[] = "1991";

  $array3['name'] = "Toyota";
  $array3[] = "Celica";
  $array3['colour'] = "black";
  $array3[] = "1991";

  print_r($array);
  print_r($array2);
  print_r($array3);
?>

示例 #3

[編輯 | 編輯原始碼]
使用上面的示例 #1示例 #2,您現在可以像使用普通變數一樣使用陣列。

PHP 程式碼:

<?php
  echo "Manufacturer: {$array['name']} \n";
  echo "Brand: &lt;b&gt;{$array2['1']}&lt;/b&gt;&lt;br /&gt;\n";
  echo "Colour: &lt;b&gt;".$array3['colour']."&lt;/b&gt;&lt;br /&gt;\n";
  echo "Year Manufactured: &lt;b&gt;".$array3[1]."&lt;/b&gt;&lt;br /&gt;\n"
?>

PHP 輸出:

 Manufacturer: <b>Toyota</b><br />
  Brand: <b>Celica</b><br />
  Colour: <b>black</b><br />
  Year Manufactured: <b>1991</b><br />

HTML 渲染:

 Manufacturer: Toyota
 Brand: Celica
 Colour: black
 Year Manufactured: 1991


多維陣列

[編輯 | 編輯原始碼]

陣列中的元素也可以是陣列,從而允許建立多維陣列。根據上面汽車的示例,一個示例是:

<?php
$cars = array(
  "car1" => array("make" => "Toyota","colour" => "Green","year" => 1999,"engine_cc" => 1998),
  "car2" => array("make" => "BMW","colour" => "RED","year" => 2005,"engine_cc" => 2400),
  "car3" => array("make" => "Renault","colour" => "White","year" => 1993,"engine_cc" => 1395),
);
?>

在此示例中,如果您使用:

<?php
  echo "$cars['car1']['make']<br>";
  echo "$cars['car3']['engine_cc']";
?>

輸出將是:

Toyota
1395

陣列函式

[編輯 | 編輯原始碼]

有數十種陣列操作函式。在實現自己的函式之前,請確保它在陣列函式(PHP 手冊條目)中不存在作為 PHP 函式。

示例

$array = array("name"=>"Toyota", "type"=>"Celica", "colour"=>"black", "manufactured"=>"1991");

array_multisort($array, SORT_ASC);
var_dump($array);
// array(4) { ["manufactured"]=> string(4) "1991" ["type"]=> string(6) "Celica" ["name"]=> string(6) "Toyota" ["colour"]=> string(5) "black" }
// The upper cases are sorted before the lowercases.

arsort($array);
var_dump($array);
// array(4) { ["colour"]=> string(5) "black" ["name"]=> string(6) "Toyota" ["type"]=> string(6) "Celica" ["manufactured"]=> string(4) "1991" }

asort($array);
var_dump($array);
// array(4) { ["manufactured"]=> string(4) "1991" ["type"]=> string(6) "Celica" ["name"]=> string(6) "Toyota" ["colour"]=> string(5) "black" }

sort($array);
var_dump($array);
// array(4) { [0]=> string(4) "1991" [1]=> string(6) "Celica" [2]=> string(6) "Toyota" [3]=> string(5) "black" }

陣列遍歷

[編輯 | 編輯原始碼]

在各種情況下,您需要訪問每個陣列元素並在其上執行任務。

最簡單也是最常用的方法是foreach運算子,它迴圈遍歷整個陣列,並分別處理每個鍵/項對。如果需要更復雜的方法來遍歷陣列,以下函式使用內部陣列指標進行操作:

  • reset - 將內部指標設定為第一個元素並返回第一個元素
  • prev - 將內部指標設定為前一個元素並返回它
  • current - 返回當前元素;不更改內部指標
  • next - 將內部指標設定為下一個元素並返回它
  • each - 返回當前元素;然後將內部指標設定為下一個元素
  • end - 將內部指標設定為最後一個元素並返回最後一個元素
<?php
// Using an array's iterator to print its values in reverse order
$my_array = array('a', 'b', 'c');
end($my_array);
while ($i = current($my_array)) {
  echo $i."\n";
  prev($my_array);
}
?>

另一種可能性是定義一個函式,並透過以下函式之一將其應用於每個陣列元素:

  • array_walk - 將函式應用於每個陣列元素
  • array_walk_recursive - 相同,但如果元素本身是陣列,它也會遍歷該陣列
[編輯 | 編輯原始碼]


華夏公益教科書