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