首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 数组定义完全指南:索引/关联/多维数组、动态创建、简写语法

     編輯:PHP 相關知識

数组基础概念

PHP 数组是有序映射:键(Key)→ 值(Value)。键可以是整数(索引数组)或字符串(关联数组),可混合。值可以是任意类型,包括数组(多维)。

创建数组的三种方式

1. array() / [] 语法(推荐)

<?php
// 索引数组(键自动 0,1,2...)
$fruits = ['apple', 'banana', 'orange'];
// 等同于
$fruits = array('apple', 'banana', 'orange');

// 关联数组
$person = [
    'name' => 'Alice',
    'age'  => 25,
    'city' => 'Tokyo',
];

// 混合键
$mixed = [
    10 => 'ten',
    'key' => 'value',
    20 => 'twenty',
];

2. 直接按键赋值(动态创建)

<?php
$arr = [];
$arr[0] = 'first';
$arr[1] = 'second';
$arr['name'] = 'Bob';
// 数组大小动态增长,无需预定义大小

3. 范围/填充函数

<?php
$nums = range(1, 10);        // [1,2,...,10]
$letters = range('a', 'f');  // ['a','b','c','d','e','f']
$zeros = array_fill(0, 5, 0); // [0,0,0,0,0]
$pairs = array_fill_keys(['a','b','c'], 'default'); // ['a'=>'default', 'b'=>'default', 'c'=>'default']

访问与修改

<?php
$person = ['name'=>'Alice', 'age'=>25];

// 读取
echo $person['name']; // Alice
echo $person['gender'] ?? 'unknown'; // 安全读取,提供默认值

// 修改/新增
$person['age'] = 26;
$person['email'] = 'alice@example.com';

// 删除
unset($person['age']);

多维数组

1. 索引嵌套(矩阵/表格)

<?php
$matrix = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9],
];
echo $matrix[1][2]; // 6 (第2行第3列)

2. 关联嵌套(记录集/配置树)

<?php
$users = [
    'alice' => ['age'=>25, 'roles'=>['admin','editor']],
    'bob'   => ['age'=>30, 'roles'=>['user']],
];
echo $users['alice']['roles'][0]; // admin

// 数据库结果集风格
$records = [
    ['id'=>1, 'title'=>'Post 1', 'tags'=>['php','tutorial']],
    ['id'=>2, 'title'=>'Post 2', 'tags'=>['js','vue']],
];

3. 复杂结构:多表、多层级

<?php
$appData = [
    'users' => [
        ['id'=>1, 'name'=>'Alice'],
        ['id'=>2, 'name'=>'Bob'],
    ],
    'posts' => [
        ['id'=>101, 'user_id'=>1, 'title'=>'Hello'],
        ['id'=>102, 'user_id'=>2, 'title'=>'World'],
    ],
    'settings' => [
        'site_name' => 'My Blog',
        'per_page'  => 10,
    ],
];
// 访问
echo $appData['posts'][0]['title']; // Hello

实用操作函数速查

需求函数/语法示例
获取长度count($arr)count($fruits) → 3
检查键存在array_key_exists($key, $arr)array_key_exists('age', $person)
检查值存在in_array($val, $arr)in_array('apple', $fruits)
获取所有键array_keys($arr)array_keys($person) → ['name','age','city']
获取所有值array_values($arr)重新索引为 0,1,2...
翻转键值array_flip($arr)值必须唯一且为字符串/整数
合并数组array_merge($a, $b) / $a + $bmerge 重新索引数字键,+ 保留首次出现键
提取列array_column($arr, 'col', 'key')从记录集提取某字段组成新数组
打印调试print_r($arr) / var_dump($arr)开发调试必备

遍历方式对比

<?php
$data = ['a'=>1, 'b'=>2, 'c'=>3];

// 1. foreach (最常用、最快)
foreach ($data as $k => $v) { echo "$k=$v\n"; }

// 2. for + array_keys (需索引控制)
$keys = array_keys($data);
for ($i=0; $i $v) { ... }

最佳实践

  1. 短语法 []:简洁、现代、性能略优。
  2. 键名语义化:关联数组用有意义的字符串键。
  3. 避免混合键:除非必要,索引与关联分离更清晰。
  4. 大数据用 Generator/Iterator:避免一次性加载全量内存。
  5. 调试用 var_dump/print_r,生产移除或受条件控制。

总结

PHP 数组是「瑞士军刀」:既是列表、字典、集合、栈、队列、树。掌握 [] 声明、动态键赋值、多维嵌套、核心操作函数(array_column, array_merge, array_keys)、遍历方式,即可应对 99% 的数据结构需求。记住:数组即映射,键值任意,极其灵活。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved