PHP 程式設計/陣列
外觀
< PHP 程式設計
陣列是在 PHP 指令碼中定義的一組資料。陣列可以在其內部包含其他陣列,沒有任何限制(因此可以構建多維陣列)。陣列可以被稱為表格或雜湊表。
陣列可以透過兩種方式建立。第一種涉及使用 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;
此示例設定並列印陣列。
<?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);
?>
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
)
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 )
以下示例將輸出與示例 #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);
?>
使用上面的示例 #1和示例 #2,您現在可以像使用普通變數一樣使用陣列。
<?php
echo "Manufacturer: {$array['name']} \n";
echo "Brand: <b>{$array2['1']}</b><br />\n";
echo "Colour: <b>".$array3['colour']."</b><br />\n";
echo "Year Manufactured: <b>".$array3[1]."</b><br />\n"
?>
Manufacturer: <b>Toyota</b><br /> Brand: <b>Celica</b><br /> Colour: <b>black</b><br /> Year Manufactured: <b>1991</b><br />
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 - 相同,但如果元素本身是陣列,它也會遍歷該陣列