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 - 相同,但如果元素本身是数组,它也会遍历该数组