当前位置: 首页 > news >正文

PHP多维数组操作与聚合分析

PHP多维数组操作与聚合分析

PHP的数组可以嵌套任意维度。多维数组在处理复杂数据结构时很有用。今天说说多维数组的常用操作。

创建和访问多维数组。

```php
$data = [
'users' => [
['id' => 1, 'name' => '张三', 'scores' => [85, 92, 78]],
['id' => 2, 'name' => '李四', 'scores' => [90, 88, 95]],
],
];

echo $data['users'][0]['name'] . "\n";
echo $data['users'][0]['scores'][0] . "\n";

// 添加数据
$data['users'][] = ['id' => 3, 'name' => '王五', 'scores' => [70, 75, 80]];
?>

array_column提取特定列。

```php
$users = [
['id' => 1, 'name' => '张三', 'age' => 28],
['id' => 2, 'name' => '李四', 'age' => 35],
['id' => 3, 'name' => '王五', 'age' => 22],
];

$names = array_column($users, 'name');
print_r($names);

$nameMap = array_column($users, 'name', 'id');
print_r($nameMap);
?>

array_map批量处理。

```php
$prices = [100, 200, 300];
$quantities = [2, 3, 1];
$totals = array_map(fn($p, $q) => $p * $q, $prices, $quantities);
print_r($totals);
?>

array_filter过滤。

```php
$numbers = [1, 2, 3, 4, 5, 6];
$evens = array_filter($numbers, fn($n) => $n % 2 === 0);
print_r($evens);

$filtered = array_filter($users, fn($u) => $u['age'] > 25);
print_r($filtered);
?>

array_reduce聚合。

```php
$orderAmounts = [100, 250, 80, 450, 200];
$total = array_reduce($orderAmounts, fn($c, $v) => $c + $v, 0);
echo "总计: $total\n";

$items = [
['id' => 1, 'amount' => 100, 'status' => 'paid'],
['id' => 2, 'amount' => 250, 'status' => 'pending'],
['id' => 3, 'amount' => 80, 'status' => 'paid'],
];

$stats = array_reduce($items, function ($carry, $item) {
$carry[$item['status']] = ($carry[$item['status']] ?? 0) + 1;
return $carry;
}, []);
print_r($stats);
?>

多维数组排序。

```php
$products = [
['name' => '商品A', 'price' => 100, 'sales' => 50],
['name' => '商品B', 'price' => 200, 'sales' => 30],
['name' => '商品C', 'price' => 150, 'sales' => 80],
];

usort($products, fn($a, $b) => $b['sales'] <=> $a['sales']);
print_r($products);

// 多字段排序
usort($products, function ($a, $b) {
if ($a['sales'] === $b['sales']) return $a['price'] <=> $b['price'];
return $b['sales'] <=> $a['sales'];
});
?>

PHP的数组函数有两百多个,常用的就二三十个。array_map、array_filter、array_reduce是最强大的三个函数。array_column、array_chunk、array_slice在数据分片时很有用。用好这些函数,很多需要写循环的场景一行代码就搞定了

http://www.jsqmd.com/news/960869/

相关文章:

  • 2026 西安价格实惠厕所天花板漏水处理公司 TOP4:厨卫漏水修缮甄选榜单 专业防水公司排名推荐(2026年5月防水补漏最新TOP权威排名) - 冠盾建筑修缮
  • 手把手教你用STM32CubeMX和HAL库驱动ILI9341屏幕(附Proteus仿真文件)
  • 南京如景装饰材料:高淳专业的玻璃隔断安装公司有哪些 - LYL仔仔
  • Chromatic:如何像外科手术一样精准修改Chromium/V8应用?
  • CSDN发布文章 markdown格式语法
  • 保姆级教程:在Windows 10/11上用JDK 8/11成功安装BurpSuite Community 2024(附浏览器代理配置避坑指南)
  • 保定 8 区县全套文案(全区统一固定标题:2026 上海防水补漏 + 瓷砖空鼓修复推荐,苏易修缮本土直营,老城老房漏水、瓷砖翘边拱起就近微创修) - 苏易修缮
  • 【RT-DETR实战】156、改进六:设计轻量级混合编码器(MobileViT思想)
  • 算法复杂度的统计特征与实验验证的技术8
  • 聊城本地黄金回收|正规店铺报价与上门服务全指南 - 余生黄金回收
  • Lakehouse重构数据基建:ACID事务与统一治理如何让数据湖真正可信可用
  • 2026郑州黄金回收榜首榜单收的顶龙头领跑,全国连锁高价回收行业标杆 - 奢侈品回收评测
  • 告别理论!用Proteus仿真直观理解PID算法:以51单片机温控为例
  • UNNPK终极指南:高效解压网易游戏NPK文件的完整教程
  • 横河DLM2054示波器远程控制全攻略:用Xwirepuller软件在电脑上‘隔空’操作示波器
  • 保姆级教程:威纶通MT8071ip触摸屏与正点原子STM32F103的Modbus接线实战(附避坑清单)
  • 别再只用它开空调了!深度挖掘涂鸦万能红外遥控器的DIY模式:手把手教你学习并控制家里所有红外设备
  • BBDown:基于.NET的哔哩哔哩视频下载器架构解析与技术实现
  • 2026最新诚信优选深圳全市黄金回收铂金彩金白银回收靠谱商家TOP实测排行榜及联系方式推荐 - 余生黄金回收
  • 从一块硅片到一颗芯片:保姆级图解12个关键制造步骤(附工艺名词对照)
  • 别只盯着准确率!用PyTorch玩转MNIST:可视化训练过程与手写数字预测的趣味实践
  • 读懂上海黄金回收行情2026 优质合规机构权威盘点 - 开心测评
  • 从“彩票假设”到智能体学习:深度网络剪枝的前沿玩法与未来猜想
  • 【工具推荐】手机上直接查看 CAN Log!iOS App「CANviewer」—— 汽车工程师的随身 CAN 分析工具
  • 基于 S7-1200 的隧道综合监控系统模块化 PLC 编程设计
  • 2026最新诚信优选长春市黄金回收白银回收铂金回收彩金回收高口碑靠谱门店TOP5权威排行榜+联系方式推荐 - 前途无量YY
  • 基于OpenCV调用OpenPose MobileNet的人体关键点检测工具(支持摄像头实时识别与图片分析)
  • 校园资源整合视角下大学生创业者的多元盈利模式探索
  • 常州市天宁区黄金回收指南:金价高企如何安全变现? - 黄金上门回收
  • TOOLQP框架解析:提升LLM代理工具检索智能化的关键技术