<?php
$form = [
            1 => [
                'step_name' => 'step 1',
                'sections' => [
                    [
                        'section_name' => 'section 1',
                        'fields' => [
                            'field_1' => [],
                            'field_2' => []
                        ]
                    ]
                ]
            ]
        ];

foreach($form as $step => $stepSettings) {
    foreach($stepSettings['sections'] as $sectionKey => $sectionSettings) {
        foreach($sectionSettings['fields'] as $fieldName => $fieldSettings) {
            $form[$step]['sections'][$sectionKey]['fields'][$fieldName]['visible'] = false;
        }
        
        $hiddenFieldCount = 0;

        foreach($form[$step]['sections'][$sectionKey]['fields'] as $fieldName => $fieldSettings) {
            if($fieldSettings['visible'] == false) {
                $hiddenFieldCount++;
            }
        }

        $form[$step]['sections'][$sectionKey]['visible'] = $hiddenFieldCount < count($sectionSettings['fields']);
    }
    
    $hiddenSectionCount = 0;

    foreach($form[$step]['sections'] as $sectionKey => $sectionSettings) {
        if($sectionSettings['visible'] == false) {
            $hiddenSectionCount++;
        }
    }

    $form[$step]['visible'] = $hiddenSectionCount < count($form[$step]['sections']);
}

var_dump($form);