php数组操作的一个算法

<?php
$data = [
    'a' => [
        'b' => 1,
        'c' => 2,
        'd' => [
            'e' => 3,
            'f' => 4
        ]
    ]
];
$temp1 = change($data, 'a.b');
$temp2 = change($data, 'a.d.f');
?>
change函数的作用是把相应键的数字加上100
比如
change($data, 'a.d.f')
相当于
$data['a']['d']['f'] = $data['a']['d']['f'] + 100;
要求
1.不能使用地址引用
2.change的第2个参数是任意配置的,比如"a.b.c.d.e.f.g.h.i.j.k",写出的change应该都能适应
3.不必做键不存在的容错处理
4.数组的结构不变的,只是相应的键的值改了
阅读 1.2k
1 个回答
function change($data, $path) {
    return array_reduce(explode('.', $path), function($result, $item) {
        return $result[$item];
    }, $data) + 100;
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题