一、语法
1、简介
PHP 中的数组实际上是一个有序映射。映射是一种把 values 关联到 keys 的类型。此类型在很多方面做了优化,因此可以把它当成真正的数组,或列表(向量),散列表(是映射的一种实现),字典,集合,栈,队列以及更多可能性。由于数组元素的值也可以是另一个数组,树形结构和多维数组也是允许的。
可以用 array()语言结构来新建一个数组。自 5.4 起可以使用短数组定义语法,用 [] 替代 array()。
$array = array(
0 => "bar",
1 => "foo"
);
// 自 PHP 5.4 起
$array = [
0 => "bar",
1 => "foo"
];
2、类型的转换
对于任意 integer
,float
,string
,boolean
和 resource
类型,如果将一个值转换为数组,将得到一个仅有一个元素的数组,其下标为 0,该元素即为此标量的值。换句话说,(array) $scalarValue
与 array($scalarValue)
完全一样。
如果一个 object
类型转换为 array,则结果为一个数组,其单元为该对象的属性,键名将为成员变量名。
将 NULL 转换为 array 会得到一个空的数组。
3、数组运算符
例子 | 名称 | 结果 |
---|---|---|
$a + $b | 联合 | $a 和 $b 的联合。 |
$a == $b | 相等 | 如果 $a 和 $b 具有相同的键/值对则为 TRUE。 |
$a === $b | 全等 | 如果 $a 和 $b 具有相同的键/值对并且顺序和类型都相同则为 TRUE。 |
$a != $b | 不等 | 如果 $a 不等于 $b 则为 TRUE。 |
$a <> $b | 不等 | 如果 $a 不等于 $b 则为 TRUE。 |
$a !== $b | 不全等 | 如果 $a 不全等于 $b 则为 TRUE。 |
+
运算符把右边的数组元素附加到左边的数组后面,两个数组中都有的键名,则只用左边数组中的,右边的被忽略。
$a = array("a" => "apple", "b" => "banana");
$b = array("a" => "pear", "b" => "strawberry", "c" => "cherry");
$c = $a + $b;
echo "Union of \$a and \$b: \n";
var_dump($c);
执行结果:
Union of $a and $b:
array(3) {
["a"]=>
string(5) "apple"
["b"]=>
string(6) "banana"
["c"]=>
string(6) "cherry"
}
数组中的单元如果具有相同的键名和值则比较时相等。
$a = array("apple", "banana");
$b = array(1 => "banana", "0" => "apple");
var_dump($a == $b); // bool(true)
var_dump($a === $b); // bool(false)
二、常用方法
1、对数组进行排序
函数名称 | 排序依据 | 数组索引键保持 | 排序的顺序 |
---|---|---|---|
array_multisort() | 值 | 键值关联的保持,数字类型的不保持 | 第一个数组或者由选项指定 |
asort() | 值 | 是 | 由低到高 |
arsort() | 值 | 是 | 由高到低 |
krsort() | 键 | 是 | 由高到低 |
ksort() | 键 | 是 | 由低到高 |
natcasesort() | 值 | 是 | 自然排序,大小写不敏感 |
natsort() | 值 | 是 | 自然排序 |
rsort() | 值 | 否 | 由高到低 |
shuffle() | 值 | 否 | 随机 |
sort() | 值 | 否 | 由低到高 |
uasort() | 值 | 是 | 由用户定义 |
uksort() | 键 | 是 | 由用户定义 |
usort() | 值 | 否 | 由用户定义 |
注意:以上的所有排序函数都是直接作用于数组本身, 而不是返回一个新的有序的数组。
2、数组与字符串间的转换
1)implode - 将一个一维数组的值转化为字符串
string implode ( string $glue , array $pieces )
string implode ( array $pieces )
2)explode — 使用一个字符串分割另一个字符串
array explode ( string $delimiter , string $string [, int $limit ] )
3)preg_split — 通过一个正则表达式分隔字符串
array preg_split ( string $pattern , string $subject [, int $limit = -1 [, int $flags = 0 ]] )
相关方法:
split
— 用正则表达式将字符串分割到数组中
str_split
— 将字符串转换为数组
其它常用方法
range—根据范围创建数组,包含指定的元素!!
list — 把数组中的值赋给一组变量
is_array — 检测变量是否是数组
array_merge — 合并一个或多个数组
参考:
官方文档:
相关书籍:
- 《PHP经典实例》 David Sklar & Adam Trachtenberg
--《最后更新时间:2018/5/30》--
网友评论