Silentland
Новичок
Массив A имеет вид:
Нужно превратить его в массив B вида:
Уровней вложенности может быть сколько угодно, разделитель только "_"
Можно определить функцию и создать рекурсию на 30 строчек... Но как-то громоздко это.
Мое решение такое:
У кого-нибудь есть мысли как написать изящнее?
PHP:
array("aa_bb_cc" => 123, "dd_ee" => 456, ...)
PHP:
array("aa" => array("bb" => array("cc" => 123))), "dd"=>array("ee" => 456), ...)
Можно определить функцию и создать рекурсию на 30 строчек... Но как-то громоздко это.
Мое решение такое:
PHP:
$A = array("aa_bb_cc" => 123, "aa_ee" => null);
foreach ($A as $field => $value) {
$arr = explode("_", $field);
$str = '$B';
for ($i = 0; $i < count($arr); $i++) {
$str .= '[$arr[' . $i . ']]';
}
$str = '$alias=&' . $str . ';';
eval($str);
$alias = $value;
}
echo print_r ($B, true);