PHP如何批量修改二维数组中值

每个name值加pex,age加5, 原数据:

php 复制代码
$data=[
    ["name"=>'a','age'=>12],
    ["name"=>'b','age'=>22],
    ["name"=>'c','age'=>33],
    ["name"=>'d','age'=>44],
];

实现效果

方案一、foreach引用方式

php 复制代码
$data=[
    ["name"=>'a','age'=>12],
    ["name"=>'b','age'=>22],
    ["name"=>'c','age'=>33],
    ["name"=>'d','age'=>44],
];

foreach ($data as &$v){
    $v['name']="pex".$v['name'];
    $v['age']=$v['age']+5;
}
var_dump($data);

方案二、foreach通过key改变原数组值

php 复制代码
$data=[
    ["name"=>'a','age'=>12],
    ["name"=>'b','age'=>22],
    ["name"=>'c','age'=>33],
    ["name"=>'d','age'=>44],
];

foreach ($data as $k=>$v){
    $data[$k]['name']="pex".$v['name'];
    $data[$k]['age']=$v['age']+5;
}
var_dump($data);

方案三、使用传统的for循环修改数组元素:

php 复制代码
$data = [
    ["name" => 'a', 'age' => 12],
    ["name" => 'b', 'age' => 22],
    ["name" => 'c', 'age' => 33],
    ["name" => 'd', 'age' => 44],
];
for ($i = 0; $i < count($data); $i++) {
    $data[$i]['name'] = "pex" . $data[$i]['name'];
    $data[$i]['age'] = $data[$i]['age']+5;
}
var_dump($data);

方案四、使用 foreach 循环副本修改数组元素:

php 复制代码
$data = [
    ["name" => 'a', 'age' => 12],
    ["name" => 'b', 'age' => 22],
    ["name" => 'c', 'age' => 33],
    ["name" => 'd', 'age' => 44],
];
$newData = [];
foreach ($data as $item) {
    $item['name'] = "pex" . $item['name'];
    $item['age'] = $item['age']+5;
    $newData[] = $item;
}
var_dump($newData);

方案五、使用 array_map 函数修改数组元素:

php 复制代码
<?php

$data = [
    ["name" => 'a', 'age' => 12],
    ["name" => 'b', 'age' => 22],
    ["name" => 'c', 'age' => 33],
    ["name" => 'd', 'age' => 44],
];
$newData = array_map(function ($item) {
    $item['name'] = "pex" . $item['name'];
    $item['age'] =  $item['age']+5;
    return $item;
}, $data);
var_dump($newData);
复制代码
相关推荐
Knight_AL26 分钟前
Java 文件下载时文件名中的 `#` 被转换成 `%23`?一次 URL 编码与解码问题排查
java·开发语言
FRing031 小时前
vue2干货总结2(v-bind、v-for、v-model、指令修饰符、v-bind操作class和style)
开发语言·前端·vue.js·vue2
by209991 小时前
C++ 智能指针的所有权与使用
开发语言·c++·经验分享
砚底藏山河2 小时前
python量化自定义周期 K 线合成
java·开发语言·数据库·python·金融
IT召唤狮2 小时前
开源企业级零信任项目Pangolin,零信任能挡住PHP核弹漏洞吗?
开发语言·开源·php
知已难寻2 小时前
03 · OpenStack的计算管理 Nova
运维·服务器·开发语言·云原生·云计算·openstack·开源软件
Rover Ramble2 小时前
C++ 用互斥锁实现读写锁
开发语言·c++
码流子3 小时前
移动收费怎么做?手持终端+App+收费中心的架构实践
java·开发语言·架构
雪落漂泊3 小时前
C++算法 滑动窗口篇(下)
开发语言·c++
云创智城-yuncitys3 小时前
YunParking 4.0:JDK 17 与 Spring Boot 3.2 的停车云升级
java·开发语言·spring boot