I would like to convert and array to json in php, I tried firstly to split keys with the '_' separator, but after this I don't know ...
From this input:
[
"elements_0_image": "",
"elements_0_content_subtitle": "Subtitle",
"elements_0_content_title": "Title",
"elements_0_content_description": "Description",
"elements_0_content_accordion_0_label": "label",
"elements_0_content_accordion_0_contenu": "content",
"elements_0_content_accordion": 1,
"elements_0_content_button": {
"title": "",
"url": "http://test",
"target": ""
}
]
To this output:
{
"elements": [
{
"image": "",
"content": {
"subtitle": "Subtitle",
"title": "Title",
"description": "Description",
"accordion": [
{
"label": "label",
"contenu": "content"
}
],
"button": {
"title": "",
"url": "http://test",
"target": "",
}
}
}
],
}
EDIT:
So based from an old question Create variable length array from string
I tried this:
$output = [];
foreach ( $reversed as $key => $value ) {
$keys = explode( '_', $key );
$last = count( $keys ) - 1;
$step = &$output;
foreach ( $keys as $k => $ke ) {
if ( $k == $last ) {
$step[ $ke ] = $value;
} else if ( is_array( $step ) ) {
$step[ $ke ] = [];
}
$step = &$step[ $ke ];
}
}
but I get
{
"elements": [
{
"content": {
"button": {
"title": "",
"url": "http://test",
"target": "",
}
}
}
]
}
=>between keys and values, not:.