I am stuck...
I have this value in my PHP:
$arr['something1']['something2'] = value;
I want to have a func($arr)
that returns:
$arr['something1[something2]'] = value;
Here is my current codes for nested 3 arrays:
static function flattenArray(array $notFlat, string $pK) {
$index = 0;
foreach ($notFlat as $k => $v) {
if (is_array($v)) {
foreach ($v as $_k => $_v) {
if (is_array($_v)) {
foreach ($_v as $__k => $__v) {
if (is_array($__v)) {}
else{
unset($notFlat[$k]);
$newArray = array_slice($notFlat, 0, $index, true) +
$notFlat[$k] = [$pK.$k.'['.$_k.']'.'['.$__k.']' => $__v] +
array_slice($notFlat, $index, NULL, true);
$notFlat = $newArray;
}
}
}
}
}
$index ++;
}
return $notFlat;
}
But that is too manual... I think recursive function can work but I am not sure what to return in case iterated value is an array.
EDIT1: Expected Output
$asd = ['asd' => ['jkf' => ['qwe' => 'wer', 'asd' => '123', 'kjk' => 'sdf', '456' => 'zxc']], 'dfg', 'test' => ['ert' => '234'], 'cvf'];
print_r(func($asd));
/*
Array
(
[test[ert]] => 234
[asd[jkf][456]] => zxc
[asd[jkf][kjk]] => sdf
[asd[jkf][asd]] => 123
[asd[jkf][qwe]] => wer
[0] => dfg
[1] => cvf
)
*/