Another take on this that worked best for me with handling deep nested multidimensional associative and non-associative arrays:
/**
* Flatten a Multidimensional Array
*/
function array_multidimensional_flatten( $array, $position = [], $separator = '.' ) {
if ( !is_array( $array ) ) {
return false;
}
$result = [];
foreach ( $array as $key => $value ) {
if ( is_array( $value ) ) {
$position[] = $key;
$result = array_merge( $result, array_multidimensional_flatten( $value, $position ) );
} else {
if ( $position ) {
$key = implode( $separator, $position ) . "{$separator}{$key}";
}
$result = array_merge( $result, [$key => $value] );
}
}
return $result;
}
Using it with a large multidimensional array will output something like this:
[
'hero__overlay-opacity' => '100',
'hero__lead-in' => 'Underwritten by TruStage® Insurance',
'hero__optimize' => '1',
'hero__layout' => 'centered',
'flexible-content.0.acf_fc_layout' => 'title',
'flexible-content.0.acfe_flexible_toggle' => '',
'flexible-content.0.text' => 'Enabling Smart Financial Decisions',
'flexible-content.0.size.value' => 'lg',
'flexible-content.0.size.label' => 'L',
'flexible-content.0.size.alignment.value' => 'center',
'flexible-content.0.size.alignment.label' => 'Center',
'flexible-content.0.size.alignment.weight.value' => 'normal',
'flexible-content.0.size.alignment.weight.label' => 'Regular',
'flexible-content.0.1.acf_fc_layout' => 'grid-stats',
'flexible-content.0.1.acfe_flexible_toggle' => '',
'flexible-content.0.1.columns.0.statistic' => '85+',
'flexible-content.0.1.columns.0.description' => 'Years of Experience',
'flexible-content.0.1.columns.0.1.statistic' => 'A',
'flexible-content.0.1.columns.0.1.description' => 'Financial rating1',
'flexible-content.0.1.columns.0.1.2.statistic' => '4.75 / 5',
'flexible-content.0.1.columns.0.1.2.description' => 'Rating on TrustPilot',
'flexible-content.0.1.2.acf_fc_layout' => 'icon-columns',
'flexible-content.0.1.2.acfe_flexible_toggle' => '',
'flexible-content.0.1.2.title' => 'Insurance Products',
'flexible-content.0.1.2.background' => 'rgb(246,246,246)',
'flexible-content.0.1.2.alignment.value' => 'center',
'flexible-content.0.1.2.alignment.label' => 'Center',
'flexible-content.0.1.2.alignment.style.value' => 'default',
'flexible-content.0.1.2.alignment.style.label' => 'Bordered Circle',
'flexible-content.0.1.2.alignment.style.column.0.icon_type' => 'icon',
'flexible-content.0.1.2.alignment.style.column.0.icon' => 'insurance-add',
'flexible-content.0.1.2.alignment.style.column.0.image' => '',
'flexible-content.0.1.2.alignment.style.column.0.title' => 'AD&D Insurance',
'flexible-content.0.1.2.alignment.style.column.0.link' => '/insurance/accidental-death-dismemberment/',
]
RecursiveIteratorIterator:) Should come to good use.SELF_FIRT: codepad.org/pAmiN8Ha