没有不值得去解决的问题,也没有不值得去学习的技术!

Pass by Reference Simplifies Multidimensional Array Operations in Laravel 6

1. The existing code implementation is as follows:

PHP
<?php

use Illuminate\Support\Arr;

if (Arr::has($schema, 'sections')) {
    foreach ($schema['sections'] as $sectionKey => $section) {
        foreach ($section['blocks'] as $blockKey => $block) {
            if ($block['type'] == 'internal/size-chart/blocks/size-chart') {
                Arr::forget($schema, 'sections.' . $sectionKey . '.blocks.' . $blockKey);
                $blockOrderKey = array_search($blockKey, $section['block_order']);
                if ($blockOrderKey !== false) {
                    Arr::forget($schema, 'sections.' . $sectionKey . '.block_order.' . $blockOrderKey);
                }
            }
        }
        Arr::set($schema, 'sections.' . $sectionKey . '.block_order', array_values(Arr::get($schema, 'sections.' . $sectionKey . '.block_order')));
    }
}

return $schema;

2. To streamline the implementation using pass by reference, you can replace Arr::forget($schema, ‘sections.’ . $sectionKey . ‘.blocks.’ . $blockKey); with: Arr::forget($section, ‘blocks.’ . $blockKey);

PHP
<?php
 
use Illuminate\Support\Arr;
 
if (Arr::has($schema, 'sections')) {
    foreach ($schema['sections'] as $sectionKey => &$section) {
        foreach ($section['blocks'] as $blockKey => $block) {
            if ($block['type'] == 'internal/size-chart/blocks/size-chart') {
                Arr::forget($section, 'blocks.' . $blockKey);
                $blockOrderKey = array_search($blockKey, $section['block_order']);
                if ($blockOrderKey !== false) {
                    Arr::forget($section, 'block_order.' . $blockOrderKey);
                }
            }
        }
        Arr::set($section, 'block_order', array_values(Arr::get($section, 'block_order')));
    }
}
 
return $schema;

关于作者 · 持续学习与技术实践

我是一名拥有 15 年以上开发经验的技术从业者,自 2013 年起持续运营个人技术博客,记录工作与个人项目中遇到的真实问题,以及解决问题过程中的探索、实践和思考。

除了技术写作,我也在持续开发和维护自己的独立项目,探索新技术和新工具在实际场景中的应用。我始终相信,没有不值得去解决的问题,也没有不值得去学习的技术。

如果这篇文章对你有所帮助,欢迎浏览博客中的其他文章,也欢迎交流技术经验与想法。

关于我  ·  GitHub  ·  邮件联系