基于Laravel集合/数组更新首个集合/数组的值,若不存在则置为0

聖光之護
发布: 2025-07-31 21:26:01
原创
836人浏览过

基于laravel集合/数组更新首个集合/数组的值,若不存在则置为0

本文旨在解决在Laravel中,如何基于第二个集合/数组的值来更新第一个集合/数组的值,并且当第二个集合/数组中不存在对应项时,将第一个集合/数组中的值置为0的问题。我们将提供一种高效且简洁的方法,通过引用和查找表来实现这一目标,避免使用复杂的集合操作。

解决方案

该方案的核心思想是:首先遍历第一个数组,将其 points 值初始化为 0,并建立一个 name 到 points 的引用查找表。然后,遍历第二个数组,利用查找表将第二个数组中的 points 值更新到第一个数组中对应的 points 引用。

以下是具体实现步骤和代码示例:

  1. 准备数据

    假设我们有两个数组 $first 和 $second,结构如下:

    $first = [
        "name" => "Test A",
        "scores" => [
            ["name" => "Values", "points" => 9],
            ["name" => "Algebra", "points" => 6],
            ["name" => "Science", "points" => 5],
            ["name" => "Total", "points" => 20]
        ]
    ];
    
    $second = [
        "name" => "Test A",
        "scores" => [
            ["name" => "Values", "points" => 5],
            ["name" => "Algebra", "points" => 8],
            ["name" => "Total", "points" => 13]
        ]
    ];
    登录后复制
  2. 初始化并创建查找表

    遍历 $first['scores'],将每个元素的 points 初始化为 0,并创建一个 $refPoints 数组,用于存储 name 到 points 的引用。

    foreach ($first['scores'] as ['name' => $name, 'points' => &$points]) {
        $points = 0;
        $refPoints[$name] =& $points;
    }
    登录后复制

    注意: & 符号表示引用。$refPoints[$name] =& $points; 创建了一个 $refPoints[$name] 到 $points 的引用。这意味着,修改 $refPoints[$name] 的值,也会同时修改 $points 的值。

  3. 更新 points 值

    遍历 $second['scores'],使用 $refPoints 查找表更新 $first['scores'] 中对应的 points 值。

    foreach ($second['scores'] as ['name' => $name, 'points' => $refPoints[$name]]);
    登录后复制

    由于 $refPoints[$name] 是 $points 的引用,所以这一步直接修改了 $first['scores'] 中的 points 值。

  4. 查看结果

    执行完以上步骤后,$first 数组将被更新为期望的结果:

    var_export($first);
    登录后复制

    输出:

    array (
      'name' => 'Test A',
      'scores' => 
      array (
        0 => 
        array (
          'name' => 'Values',
          'points' => 5,
        ),
        1 => 
        array (
          'name' => 'Algebra',
          'points' => 8,
        ),
        2 => 
        array (
          'name' => 'Science',
          'points' => 0,
        ),
        3 => 
        array (
          'name' => 'Total',
          'points' => 13,
        ),
      ),
    )
    登录后复制

完整代码示例

登录后复制

总结

该方法利用引用和查找表,避免了复杂的集合操作,提高了效率。适用于需要基于第二个集合/数组更新第一个集合/数组,并且当第二个集合/数组中不存在对应项时,需要将第一个集合/数组中的值置为默认值(例如 0)的场景。

以上就是基于Laravel集合/数组更新首个集合/数组的值,若不存在则置为0的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
相关标签:
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 //m.sbmmt.com/ All Rights Reserved | php.cn | 湘ICP备2023035733号