跳转到内容
主菜单
主菜单
移至侧栏
隐藏
导航
首页
最近更改
随机页面
MediaWiki帮助
代码酷
搜索
搜索
中文(中国大陆)
外观
创建账号
登录
个人工具
创建账号
登录
未登录编辑者的页面
了解详情
贡献
讨论
编辑“︁
PHP索引数组
”︁(章节)
页面
讨论
大陆简体
阅读
编辑
编辑源代码
查看历史
工具
工具
移至侧栏
隐藏
操作
阅读
编辑
编辑源代码
查看历史
常规
链入页面
相关更改
特殊页面
页面信息
外观
移至侧栏
隐藏
您的更改会在有权核准的用户核准后向读者展示。
警告:
您没有登录。如果您进行任何编辑,您的IP地址会公开展示。如果您
登录
或
创建账号
,您的编辑会以您的用户名署名,此外还有其他益处。
反垃圾检查。
不要
加入这个!
= PHP索引数组 = 索引数组是PHP中最基础的数组类型之一,使用数字键(从0开始)存储和访问元素。本条目将详细介绍其特性、操作方法和实际应用场景。 == 基本概念 == '''索引数组(Indexed Array)'''有以下核心特征: * 键名为连续整数,默认从0开始自动分配 * 元素按插入顺序存储 * 可通过方括号<code>[]</code>或<code>array()</code>构造器创建 === 创建方式 === <syntaxhighlight lang="php"> // 方式1:短数组语法(PHP 5.4+) $colors = ['red', 'green', 'blue']; // 方式2:array()构造器 $fruits = array('apple', 'banana', 'orange'); // 方式3:动态赋值 $languages[0] = 'PHP'; $languages[1] = 'JavaScript'; </syntaxhighlight> == 基本操作 == === 访问元素 === 使用数字索引访问特定位置元素: <syntaxhighlight lang="php"> echo $colors[0]; // 输出:red echo $fruits[2]; // 输出:orange </syntaxhighlight> === 遍历数组 === 常用遍历方法对比: {| class="wikitable" ! 方法 !! 示例 !! 适用场景 |- | for循环 || <syntaxhighlight lang="php">for($i=0; $i<count($array); $i++)</syntaxhighlight> || 需要索引号时 |- | foreach || <syntaxhighlight lang="php">foreach($array as $value)</syntaxhighlight> || 仅需元素值时 |- | foreach+键 || <syntaxhighlight lang="php">foreach($array as $index=>$value)</syntaxhighlight> || 需要索引和值 |} === 修改数组 === <syntaxhighlight lang="php"> // 修改元素 $colors[1] = 'yellow'; // 添加元素(自动使用下一个整数键) $colors[] = 'black'; // 等同于 $colors[3] = 'black' </syntaxhighlight> == 常用函数 == PHP提供丰富的数组处理函数: {| class="wikitable" ! 函数 !! 描述 !! 示例 |- | <code>count()</code> || 获取元素数量 || <code>count($colors)</code> |- | <code>array_push()</code> || 末尾添加元素 || <code>array_push($colors, 'white')</code> |- | <code>array_pop()</code> || 移除末尾元素 || <code>array_pop($colors)</code> |- | <code>array_merge()</code> || 合并数组 || <code>array_merge($arr1, $arr2)</code> |- | <code>array_slice()</code> || 截取子数组 || <code>array_slice($arr, 1, 2)</code> |} == 内存结构 == 索引数组在内存中的典型存储方式: <mermaid> graph LR A[数组变量] --> B[内存地址] B --> C[索引0: 值地址] B --> D[索引1: 值地址] B --> E[...] C --> F["值1"] D --> G["值2"] </mermaid> == 实际应用案例 == === 案例1:考试成绩处理 === <syntaxhighlight lang="php"> $scores = [85, 92, 78, 95]; $total = array_sum($scores); $average = $total / count($scores); echo "平均分:".$average; // 输出:平均分:87.5 </syntaxhighlight> === 案例2:分页数据 === <syntaxhighlight lang="php"> $itemsPerPage = 5; $currentPage = 2; $allItems = range(1, 100); // 生成1-100的数组 $pageItems = array_slice( $allItems, ($currentPage - 1) * $itemsPerPage, $itemsPerPage ); print_r($pageItems); // 输出6-10的内容 </syntaxhighlight> == 性能考虑 == 索引数组操作的时间复杂度: * 访问:O(1) * 搜索:O(n) * 插入/删除末尾:O(1) * 插入/删除中间:O(n) 数学表示: <math> T(n) = \begin{cases} O(1) & \text{随机访问} \\ O(n) & \text{线性搜索} \end{cases} </math> == 进阶技巧 == === 多维索引数组 === <syntaxhighlight lang="php"> $matrix = [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ]; echo $matrix[1][2]; // 输出:6 </syntaxhighlight> === 类型混合 === PHP允许不同数据类型的元素共存: <syntaxhighlight lang="php"> $mixed = [1, "text", 3.14, true]; </syntaxhighlight> == 常见问题 == '''Q:索引不从0开始会怎样?'''<br> A:PHP会自动将最小索引视为0,其他索引按相对位置计算。例如<code>$arr[5]=a; $arr[]=b</code>会导致<code>b</code>的索引为6。 '''Q:如何重置索引?'''<br> A:使用<code>array_values()</code>函数: <syntaxhighlight lang="php"> $reindexed = array_values($array); </syntaxhighlight> == 最佳实践 == * 优先使用短数组语法<code>[]</code> * 大量插入操作考虑使用<code>array_push()</code>而非<code>$array[]</code> * 频繁搜索时考虑使用关联数组或专门的数据结构 * 注意数组函数多数返回新数组而非修改原数组 [[Category:PHP数组]] [[Category:PHP基础]] [[Category:编程语言]] [[Category:PHP]]
摘要:
请注意,所有对代码酷的贡献均被视为依照知识共享署名-非商业性使用-相同方式共享发表(详情请见
代码酷:著作权
)。如果您不希望您的文字作品被随意编辑和分发传播,请不要在此提交。
您同时也向我们承诺,您提交的内容为您自己所创作,或是复制自公共领域或类似自由来源。
未经许可,请勿提交受著作权保护的作品!
取消
编辑帮助
(在新窗口中打开)