PHP Academy · 课时

索引数组与关联数组

创建并访问 PHP 的这两种数组。

第 1 / 4 课13 个步骤

索引数组与关联数组 是 CoddyKit 上的免费 PHP Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 PHP Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 PHP Academy 课程共包含 4 节课。

PHP 中的数组

PHP 数组是有序映射,可以充当列表、字典、栈和队列。主要有两种类型:

  • 索引数组:使用数字键(0、1、2……)
  • 关联数组:使用字符串键

创建索引数组

使用简短数组语法 [] 或 array():

<?php
$colors = ['red', 'green', 'blue'];    // short syntax
$nums   = array(10, 20, 30);            // long syntax

echo $colors[0]; // red
echo $nums[2];   // 30
echo count($colors); // 3

添加和删除元素

使用 [] 追加元素,使用 unset() 删除元素:

<?php
$items = ['a', 'b', 'c'];
$items[] = 'd';      // append
$items[] = 'e';

unset($items[1]);    // remove 'b'

print_r($items);
// [0=>'a', 2=>'c', 3=>'d', 4=>'e'] — index gap!

关联数组

使用字符串键创建类似字典的结构:

<?php
$person = [
    'name'  => 'Alice',
    'age'   => 30,
    'email' => 'alice@example.com',
];

echo $person['name'];   // Alice
$person['city'] = 'London';  // add new key
unset($person['email']);      // remove key

检查键是否存在

检查数组中是否存在某个键或值:

<?php
$config = ['debug' => false, 'version' => '2.0'];

var_dump(array_key_exists('debug', $config));  // true
var_dump(isset($config['debug']));             // false! debug=false, not NULL
var_dump(in_array('2.0', $config));            // true

array_key_exists 与 isset

对于值为 NULL 的键,isset() 返回 false;而 array_key_exists() 即使遇到 NULL 值也会返回 true:

<?php
$data = ['key' => null];

var_dump(isset($data['key']));              // false
var_dump(array_key_exists('key', $data));  // true

数组解构

使用简短列表语法将数组解构到变量中:

<?php
$point = [10, 20, 30];
[$x, $y, $z] = $point;
echo "x=$x y=$y z=$z"; // x=10 y=20 z=30

// Skip elements
[, $second] = [1, 2, 3];
echo $second; // 2

合并数组

使用 array_merge() 或展开运算符合并数组:

<?php
$a = ['x' => 1, 'y' => 2];
$b = ['y' => 99, 'z' => 3];

$merged = array_merge($a, $b);
print_r($merged); // x=>1, y=>99 (b overwrites), z=>3

$union = $a + $b;
print_r($union);  // x=>1, y=>2 (a wins), z=>3

数组切片

使用 array_slice() 提取数组的一部分:

<?php
$letters = ['a', 'b', 'c', 'd', 'e'];

$slice = array_slice($letters, 1, 3);
print_r($slice); // ['b', 'c', 'd']

$last2 = array_slice($letters, -2);
print_r($last2); // ['d', 'e']

栈和队列操作

PHP 数组也可以充当栈和队列:

<?php
$stack = [];
array_push($stack, 'a', 'b');
$top = array_pop($stack);  // 'b' — LIFO

$queue = ['first', 'second'];
array_push($queue, 'third');
$front = array_shift($queue);  // 'first' — FIFO

array_unshift($queue, 'zero'); // prepend

compact 和 extract

compact() 根据变量名称构建关联数组;extract() 则执行相反的操作:

<?php
$name = 'Alice';
$age  = 30;

$data = compact('name', 'age');
// ['name' => 'Alice', 'age' => 30]

extract(['city' => 'London', 'country' => 'UK']);
echo $city;    // London
echo $country; // UK

快速检查

当键存在但其值为 NULL 时,array_key_exists('key', $arr) 会返回什么?

回顾:索引数组和关联数组

PHP 数组基础:

  • 索引数组使用数字键,关联数组使用字符串键
  • 使用 $arr[] = value 追加元素
  • 检查键:比较 array_key_exists() 与 isset()
  • 使用 [$a, $b] = $arr 进行解构
  • 使用 array_merge() 或 + 合并数组(覆盖规则不同)
  • 栈和队列操作:入栈、出栈、移除首项、首部插入
免费开始

用 AI 导师学习 PHP — 免费

在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。

课程
49
课程
195

常见问题解答

「索引数组与关联数组」课时是免费的吗?

是的 — 「索引数组与关联数组」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 PHP Academy 课程的其余内容,请升级到 CoddyKit PRO。 PHP Academy 课程共包含 4 节课。

「索引数组与关联数组」这节课中我会学到什么?

创建并访问 PHP 的这两种数组。 你通过在浏览器中直接运行的动手代码来练习 PHP Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 PHP Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 PHP Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。

「索引数组与关联数组」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 PHP Academy 课中编写并运行代码吗?

能。每节 PHP Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 索引数组与关联数组
  2. 多维数组
  3. 数组排序与搜索
  4. 数组转换函数
← 返回 PHP Academy