PHP 数组处理实战:创建、操作与排序详解

林见深
林见深
发布时间:2026-10-15| 5人浏览过
原创

在 PHP 开发中,高效处理数据离不开对数组的熟练运用。本文将深入解析数组的创建、键值操作、遍历逻辑及多维排序技巧,并结合具体代码案例,帮助你掌握从数据录入到整理输出的完整工作流。

数组的创建与初始化

数组是 PHP 中最常用的数据结构之一。除了基础的 array() 函数外,还有多种动态创建数组的方式,能够显著提高代码的灵活性。

第1步:利用变量动态建立数组

目的:将当前符号表中的变量快速转换为数组结构。

入口:compact() 函数用于收集变量并生成数组,变量名作为键,变量内容作为值;extract() 则执行反向操作,将数组单元转为独立变量。

动作:

<?php
$num = 10;
$str = "string";
$array = array(1, 2, 3);

// compact 将变量转为数组,键名为变量名
$newarray = compact("num", "str", "array");
print_r($newarray);
/* 结果:
Array
(
    [num] => 10
    [str] => string
    [array] => Array ([0] => 1 [1] => 2 [2] => 3)
)
*/

// extract 将数组转回变量
$test_array = array("key1" => 1, "key2" => 2, "key3" => 3);
extract($test_array);
echo "$key1 $key2 $key3"; // 输出: 1 2 3
?>

第2步:使用关联与范围函数创建

目的:基于两个现有数组或指定数值范围快速构建新数组。

动作:

  • array_combine():使用一个数组的值作为键名,另一个数组的值作为相应值。
<?php
$a = array('green', 'red', 'yellow');
$b = array(' avocado ', ' apple ', ' banana ');
$c = array_combine($a, $b);
print_r($c);
?>
  • range():创建包含指定范围内单元的数组,支持整数和字符序列。

键名与值的常用操作

在实际应用中,我们经常需要检查、提取或修改数组内部的键与值。

第1步:检查键与值的存在性

参数说明:isset() 在键为 null 时返回 false,而 array_key_exists() 即使值为 null 也会返回 true;in_array() 用于检查值是否存在;array_search() 返回键名,不存在则返回 null。

第2步:赋值与填充工具

list() 结构:将数组中的值赋给一系列变量,常用于遍历时的解构。

<?php
$arr = array("红色", "蓝色", "白色");
list($red, $blue, $white) = $arr;
echo $red; // 红色
?>

其他工具:

  • array_fill() / array_fill_keys():用给定值填充数组。
  • array_flip():交换键名和值,若值重复,新数组只保留最后一个出现的原键。
  • array_keys() / array_values():分别提取所有键名或所有值生成新数组。
  • array_splice():删除并替换数组片段。
  • array_unique():移除重复值,保持原有索引关系(除非使用 SORT_NUMERIC 等标志)。

数组的遍历与输出

遍历数组是数据处理的核心环节,PHP 提供了多种循环结构以适应不同场景。

第1步:使用 foreach 进行结构化遍历

优势:foreach 是最推荐的遍历方式,能同时访问键名和值,且无需手动管理指针。

<?php
$color = array("a" => "red", "blue", "white");

// 仅输出值
foreach ($color as $value) {
    echo $value . "<br>";
}

// 输出键名 => 值
foreach ($color as $key => $value) {
    echo "$key => $value<br>";
}
?>

第2步:综合应用——学生成绩录入系统

场景:模拟表单提交,接收多个学生成绩,找出不及格分数并计算平均分。

<?php
echo "<form method=post>";
for ($i = 1; $i < 6; $i++) {
    echo "学生$i的成绩:<input type=text name='stu[]' ><br>";
}
echo "<input type=submit name=bt value='提交'></form>";

if (isset($_POST['bt'])) {
    $sum = 0;
    $k = 0;
    $sco = array(); // 存储不及格成绩
    $stu = $_POST['stu'];
    $num = count($stu);

    foreach ($stu as $score) {
        $sum += $score;
        if ($score < 60) {
            $sco[$k++] = $score;
        }
    }

    echo "低于60分的成绩有:";
    echo implode("<br>", $sco);
    echo "<br>平均分为:" . ($num ? $sum / $num : 0);
}
?>

数组排序与高级操作

当数据需要按特定顺序展示时,排序函数至关重要。对于多维数据,排序逻辑需要更精细的控制。

第1步:一维数组的基础排序

  • 升序:sort()(重索引)、asort()(保关联)、ksort()(按键名升序)。
  • 降序:rsort()、arsort()、krsort()。
  • 随机与反转:shuffle()(打乱并重索引)、array_reverse()(保持索引或重置)。
  • 自然排序:natsort(),适用于包含数字的文件名或版本号排序。

第2步:多维数组与表格数据处理

场景:接收学号、姓名、成绩的多行表单输入,按成绩升序排列后以表格输出,并支持查询。

  1. 接收数据:通过表单提交,使用 [] 后缀自动将同名字段存入数组。
  2. 多维排序:使用 array_multisort()。第一个参数为主要排序字段,后续参数依次排序。
  3. 重组数据结构:将平行数组(XH, XM, CJ)合并为二维数组以便逐行渲染。
<?php
if (isset($_POST['bt_stu'])) {
    $XH = $_POST['XH'];
    $XM = $_POST['XM'];
    $CJ = $_POST['CJ'];

    // 以成绩为首要条件排序
    array_multisort($CJ, $XH, $XM);

    // 重组为二维数组
    $sum = [];
    for ($i = 0; $i < count($XH); $i++) {
        $sum[$i] = [$XH[$i], $XM[$i], $CJ[$i]];
    }

    // 输出表格...
    foreach ($sum as $row) {
        list($id, $name, $score) = $row;
        echo "<tr><td>$id</td><td>$name</td><td>$score</td></tr>";
    }

    // 搜索特定学生
    reset($sum);
    while (list($key, $value) = each($sum)) {
        list($id, $name, $score) = $value;
        if ($id == "081101") {
            echo "找到学生:$name, 成绩: $score";
            break;
        }
    }
}
?>

以上介绍了 PHP 数组从基础创建到复杂排序处理的完整技能树。掌握 compact/extract 的变量转换、foreach 的安全遍历以及 array_multisort 的多维排序,能应对大多数 Web 开发中的数据整理需求。以上就是 PHP 数组处理实战的详细内容,更多关于 PHP 基础教程的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。