PHP - array() 函数


定义和用法 

功能

array() 是PHP用于创建数组的核心函数。它可以创建索引数组、关联数组和多维数组,并支持灵活的数据类型(整数、字符串、对象、其他数组等)。

此函数最初是作为核心 PHP 4.0.0 的一部分引入的。

语法

array(mixed $values...): array

参数: 

接受任意数量的键值对,格式为 [key =>] value。  

  • 如果省略键名(key),PHP会自动分配从0开始的整数索引。
  • 键名可以是整数或字符串。
  • 值可以是任意数据类型(包括数组本身)。

返回值:  

返回构造的数组。如果无参数调用,返回空数组。

基本用法

1. 创建索引数组

$fruits = array("Apple", "Banana", "Orange");
// 等价于:
$fruits = ["Apple", "Banana", "Orange"]; // PHP 5.4+ 短数组语法

输出:

Array
(
    [0] => Apple
    [1] => Banana
    [2] => Orange
)

2. 创建关联数组

$user = array(
    "name" => "Alice",
    "age" => 25,
    "email" => "alice@example.com"
);

输出:

Array
(
    [name] => Alice
    [age] => 25
    [email] => alice@example.com
)

3. 混合键类型

$mixed = array(
    10 => "Number 10",
    "color" => "red",
    "5" => "String key 5",  // 字符串"5"会被转换为整数5
    true => "Boolean key"    // true转为1,false转为0
);

输出:

Array
(
    [10] => Number 10
    [color] => red
    [5] => String key 5
    [1] => Boolean key
)

4. 创建空数组

$empty = array(); // 或 $empty = [];

高级用法

1.多维数组

$matrix = array(
    array(1, 2, 3),
    array("a", "b", "c"),
    array("name" => "Alice", "age" => 30)
);

访问元素:

echo $matrix[0][1];    // 输出 2
echo $matrix[2]["name"]; // 输出 Alice

2. 动态生成数组

$numbers = array(1, 2, 3);
$numbers[] = 4;       // 追加元素,键名为3
$numbers[10] = "Ten"; // 指定键名10

3. 结合 range() 函数

$range = range(1, 5); // 生成 [1, 2, 3, 4, 5]

4. 与其他函数配合

$keys = array("name", "age", "city");
$values = array("Bob", 28, "New York");
$combined = array_combine($keys, $values); // 合并为关联数组

注意事项

1. 键名重复与覆盖

如果键名重复,后面的值会覆盖前面的值:

$arr = array("a" => 1, "a" => 2);
print_r($arr); // 输出 ["a" => 2]

2. 键名的类型转换

  • 字符串整数键(如 "5")会被转换为整数 5。
  • 浮点数键(如 2.8)会被截断为整数 2。
  • true 转为 1,false 转为 0,null 转为空字符串 ""。

3. 省略键名的自动索引

当省略键名时,PHP会使用当前最大整数索引+1:

$arr = array(5 => "A", "B", "C"); 
// 输出 [5 => "A", 6 => "B", 7 => "C"]

4. 短数组语法 [] 的限制

短语法 [] 仅支持PHP 5.4及以上版本。旧代码需使用 array()

常见问题

1. 如何检查变量是否为数组?

if (is_array($variable)) {
    // 是数组
}

2. 如何遍历数组?

索引数组:

foreach ($fruits as $fruit) {
    echo $fruit;
}

关联数组:

foreach ($user as $key => $value) {
    echo "$key: $value";
}

3. 如何合并数组?

$arr1 = array("a", "b");
$arr2 = array("c", "d");
$merged = array_merge($arr1, $arr2); // ["a", "b", "c", "d"]

总结

array() 是PHP中构建数据结构的基础工具,支持灵活的数据组织和嵌套。无论是简单的列表还是复杂的数据模型,都可以通过 array() 快速实现。结合其他数组函数(如 array_map(), array_filter() 等),能高效处理数据操作。