合规国际互联网加速 OSASE为企业客户提供高速稳定SD-WAN国际加速解决方案。 广告
## 数组(array) PHP 中的数组实际上是一个有序映射。映射是一种把 values 关联到 keys 的类型。 此类型在很多方面做了优化,因此可以把它当成真正的数组,或列表(向量),散列表(是映射的一种实现),字典,集合,栈,队列以及更多可能性。 由于数组元素的值也可以是另一个数组,树形结构和多维数组也是允许的。 ### 数组的定义 可以用 array() 或 [] 语言结构来新建一个数组。它接受任意数量用逗号分隔的 键(key) => 值(value)对。 键(key)可是是一个整数 integer 或字符串 string 值(value)可以是任意类型的值 一个简单数组 ``` <?php $array = array( "foo" => "bar", "bar" => "foo", ); // 自 PHP 5.4 起 $array = [ "foo" => "bar", "bar" => "foo", ]; var_dump($array); array(2) { ["foo"]=> string(3) "bar" ["bar"]=> string(3) "foo" } ?> ``` 类型强制与覆盖示例 ``` <?php $array = array( 1 => "a", "1" => "b", 1.5 => "c", true => "d", ); var_dump($array); array(1) { [1]=> string(1) "d" } ?> ``` 混合 integer 和 string 键名 ``` <?php $array = array( "foo" => "bar", "bar" => "foo", 100 => -100, -100 => 100, ); var_dump($array); array(4) { ["foo"]=> string(3) "bar" ["bar"]=> string(3) "foo" [100]=> int(-100) [-100]=> int(100) } ?> ``` 没有键名的索引数组 ``` <?php $array = array("foo", "bar"); var_dump($array); array(2) { [0]=> string(3) "foo" [1]=> string(3) "bar" } ?> ``` 仅对部分单元指定键名 ``` <?php $array = array( "foo", "bar", 6 => "hello", "world", ); var_dump($array); array(4) { [0]=> string(3) "foo" [1]=> string(3) "bar" [6]=> string(5) "hello" [7]=> string(5) "world" } ?> ``` ### 多维数组 ``` <?php $users = array( array('name' => 'kate green', 'age' => 12), array('name' => 'lucy bruce', 'age' => 11), ); var_dump($users); array(2) { [0]=> array(2) { ["name"]=> string(10) "kate green" ["age"]=> int(12) } [1]=> array(2) { ["name"]=> string(10) "lucy bruce" ["age"]=> int(11) } } ?> ``` ### 访问数组单元 数组单元可以通过 array[key] 语法来访问。 ``` <?php $array = array( "foo" => "bar", 42 => 24, "multi" => array( "dimensional" => array( "array" => "foo" ) ) ); var_dump($array["foo"]); // string(3) "bar" var_dump($array[42]); // int(24) var_dump($array["multi"]["dimensional"]["array"]); // string(3) "foo" ?> ``` ### 修改数组单元 修改数组单元可以通过 array[key] = value 语法来实现,要删除某键值对,对其调用 unset() 函数。 ``` <?php $arr = array(5 => 1, 12 => 2); $arr[] = 56; // This is the same as $arr[13] = 56; // at this point of the script $arr["x"] = 42; // This adds a new element to // the array with key "x" unset($arr[5]); // This removes the element from the array unset($arr); // This deletes the whole array ?> ``` ### 数组单元遍历 遍历一维数组 ``` <?php $array = [ "foo" => "bar", "bar" => "foo", ]; foearch($array as $key => $value){ echo "key is :{$key}, value is: {$value}" . PHP_EOL; } ?> ``` 遍历二维数组 ``` <?php $users = array( array('name' => 'kate green', 'age' => 12), array('name' => 'lucy bruce', 'age' => 11), ); foearch($array as $value){ echo "name is :{$value['name']}, age is: {$value['age']}" . PHP_EOL; } ?> ``` ### 实用函数 PHP内置了非常丰富的数组函数,请参考:[数组函数](http://php.net/manual/zh/ref.array.php)