如何在PHP中使用数组(附代码示例)

1,159 阅读1分钟

数组是在一个共同的名称下分组的值的列表。

你可以用两种不同的方式定义一个空数组:

$list = [];

$list = array();

数组可以用值进行初始化:

$list = [1, 2];

$list = array(1, 2);

数组可以容纳任何类型的值:

$list = [1, 'test'];

甚至其他数组:

$list = [1, [2, 'test']];

你可以用这个符号访问数组中的元素:

$list = ['a', 'b'];
$list[0]; //'a' --the index starts at 0
$list[1]; //'b'

一旦一个数组被创建,你可以用这种方式向它追加值:

$list = ['a', 'b'];
$list[] = 'c';

/*
$list == [
  "a",
  "b",
  "c",
]
*/

你可以用array_unshift() 来代替在数组的开头添加项:

$list = ['b', 'c'];
array_unshift($list, 'a');

/*
$list == [
  "a",
  "b",
  "c",
]
*/

使用内置的count() 函数计算一个数组中有多少个项:

$list = ['a', 'b'];

count($list); //2

使用in_array() 内置函数检查一个数组是否包含一个项:

$list = ['a', 'b'];

in_array('b', $list); //true

如果除了确认存在之外,你还需要索引,使用array_search()

$list = ['a', 'b'];

array_search('b', $list) //1

有用的PHP数组函数

与字符串和数字一样,PHP为数组提供了很多非常有用的函数。我们已经看到了count(),in_array(),array_search(), 让我们再看一些:

  • is_array() 检查一个变量是否是一个数组
  • array_unique() 从一个数组中删除重复的值
  • array_search() 在数组中搜索一个值并返回键值
  • array_reverse() 反转一个数组
  • array_reduce() 使用回调函数将一个数组减少到一个单一的值
  • array_map() 对数组中的每个项目应用一个回调函数。通常用于通过修改一个现有数组的值来创建一个新的数组,而不改变该数组
  • array_filter() 使用一个回调函数将一个数组过滤为一个单一的值
  • max() 获取数组中的最大值
  • min() 获取数组中包含的最小值
  • array_rand() 从数组中获取一个随机项
  • array_count_values() 计算数组中的所有数值
  • implode() 将一个数组变成一个字符串
  • array_pop() 删除数组中的最后一项,并返回其值
  • array_shift() 与 相同,但删除的是第一个项目而不是最后一个项目array_pop()
  • sort() 对一个数组进行排序
  • rsort() 对一个数组进行倒序排序
  • array_walk() 与 类似,对数组中的每一个项都做一些事情,但除此之外,它还可以改变现有数组中的值。array_map()

关联数组

到目前为止,我们已经使用了具有递增的、数字索引的数组。0, 1, 2...

你也可以使用带有命名索引(键)的数组,我们称它们为关联数组:

$list = ['first' => 'a', 'second' => 'b'];

$list['first'] //'a'
$list['second'] //'b'

我们有一些对关联数组特别有用的函数:

  • array_key_exists() 检查一个键是否存在于数组中
  • array_keys() 从数组中获取所有的键
  • array_values() 从数组中获取所有的值
  • asort() 对一个关联数组按值进行排序
  • arsort() 按值对关联数组进行降序排序
  • ksort() 按键对关联数组进行排序
  • krsort() 按键对关联数组进行降序排序