<?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);