如何按指定顺序填充数组元素(如 zip → mmyy → num)

碧海醫心

碧海醫心

2026-07-13

392人浏览

原创

如何按指定顺序填充数组元素(如 zip → mmyy → num)

本文介绍一种无需二次遍历即可在单次循环中按预设优先级(如 zip、mmyy、num)有序填充数组的方法:通过为每类值分配带前缀的临时键(如 'a_01'、'b_02'),利用 ksort() 排序后提取值,确保结果严格遵循业务要求的字段序列。

本文介绍一种无需二次遍历即可在单次循环中按预设优先级(如 zip、mmyy、num)有序填充数组的方法:通过为每类值分配带前缀的临时键(如 'a_01'、'b_02'),利用 ksort() 排序后提取值,确保结果严格遵循业务要求的字段序列。

在处理结构化文本行(如 CSV 或自定义分隔符文件)时,常需将解析出的列按业务逻辑顺序归类填充——例如优先放置邮编(zip)、其次年月(mmyy)、最后数字(num),缺失项补空字符串。原始代码使用 [] 追加方式,导致顺序完全依赖输入列的物理位置,无法满足“逻辑优先级排序”需求。

推荐方案是在单次内层循环中,为不同校验类型的值生成可排序的临时键名,再统一排序并重置索引:

来画数字人直播
来画数字人直播

来画数字人自动化直播,无需请真人主播,即可实现24小时直播,无缝衔接各大直播平台。

下载
foreach ($filelines as $indexrow => $line) {
    $columns = explode($splitter, $line);
    $row = [];

    foreach ($columns as $columnindex => $column) {
        $column = $this->prepareValue($column);
        // 使用固定宽度计数器(如 %06d)避免字典序错误(A_10 setValue('zip', $column, $indexrow, $columnindex);
        } elseif (RegexValidation::isMMYY($column)) {
            $row['B_' . $counter] = $this->setValue('mmyy', $column, $indexrow, $columnindex);
        } elseif (RegexValidation::isNum($column)) {
            $row['C_' . $counter] = $this->setValue('num', $column, $indexrow, $columnindex);
        } else {
            // 未匹配任何规则 → 按需填充空值(或跳过)
            $row['Z_' . $counter] = '';
        }
    }

    // 按键字典序排序:A_* <p>✅ <strong>关键要点说明:</strong>  </p>
  • 前缀设计:A_、B_、C_ 对应优先级顺序(A 最高),Z_ 作为兜底;字母天然支持字典序排序。
  • 计数器格式化:使用 sprintf('%06d', $i) 保证 A_000001、A_000002 … 正确排序,避免 A_10 被排在 A_2 之前。若仅需区分类别无需保序,可用固定后缀(如 A_00)。
  • 性能优势:全程仅一次外层 + 一次内层循环,ksort() 时间复杂度为 O(n log n),远优于额外遍历排序。
  • 健壮性增强:else 分支显式处理未知类型,确保数组长度可控;若业务要求跳过无效列,可改为 continue。

此方法兼顾可读性、扩展性与性能,是 PHP 中实现“条件驱动有序填充”的典型实践。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

yy

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
python中print函数的用法
python中print函数的用法

python中print函数的语法是“print(value1, value2, ..., sep=' ', end='\n', file=sys.stdout, flush=False)”。本专题为大家提供print相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.27

1141

5

python print用法与作用
python print用法与作用

本专题整合了python print的用法、作用、函数功能相关内容,阅读专题下面的文章了解更多详细教程。

2026.02.03

125

24

string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.02

2861

3

css中float用法
css中float用法

css中float属性允许元素脱离文档流并沿其父元素边缘排列,用于创建并排列、对齐文本图像、浮动菜单边栏和重叠元素。想了解更多float的相关内容,可以阅读本专题下面的文章。

2024.04.28

2577

8

C++中int、float和double的区别
C++中int、float和double的区别

本专题整合了c++中int和double的区别,阅读专题下面的文章了解更多详细内容。

2025.10.23

263

4

java中boolean的用法
java中boolean的用法

在Java中,boolean是一种基本数据类型,它只有两个可能的值:true和false。boolean类型经常用于条件测试,比如进行比较或者检查某个条件是否满足。想了解更多java中boolean的相关内容,可以阅读本专题下面的文章。

2023.11.13

1003

6

java boolean类型
java boolean类型

本专题整合了java中boolean类型相关教程,阅读专题下面的文章了解更多详细内容。

2025.11.30

99

8

c语言中null和NULL的区别
c语言中null和NULL的区别

c语言中null和NULL的区别是:null是C语言中的一个宏定义,通常用来表示一个空指针,可以用于初始化指针变量,或者在条件语句中判断指针是否为空;NULL是C语言中的一个预定义常量,通常用来表示一个空值,用于表示一个空的指针、空的指针数组或者空的结构体指针。

2023.09.22

418

3

java中null的用法
java中null的用法

在Java中,null表示一个引用类型的变量不指向任何对象。可以将null赋值给任何引用类型的变量,包括类、接口、数组、字符串等。想了解更多null的相关内容,可以阅读本专题下面的文章。

2024.03.01

1485

6

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP开发基础之字符串篇
PHP开发基础之字符串篇

共7课时 | 1.5万人学习

PHP字符串处理(玉女心经版)
PHP字符串处理(玉女心经版)

共11课时 | 2万人学习